select random user from group
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-08-2020 12:12 AM
i want to select random user from a hard coded group, pls find below logic and suggest.
if it goes inside if it should consider approverList , if it goes else condition it should consider hard coded group and it should send approve randomly for any one person in group
if (approverList.length == 0) {
approverList.push(gs.getUserID());
return approverList;
} else {
var group = new GlideRecord("sys_user_group");
group.addQuery("sys_id", "d0b0871adbf45780a167d6fa4b9619a0");
group.query();
if (group.next()) {
i=0;
for( )
return group;
}
}
- Labels:
-
Multiple Versions

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-08-2020 12:17 AM
Hi Deepthi,
I guess else part should be a GlideRecord to sys_user_grmember table & not sys_user_group.
Can you try below.
if (approverList.length == 0) {
approverList.push(gs.getUserID());
return approverList;
} else {
var group = new GlideRecord("sys_user_grmember");
group.addQuery("group", "d0b0871adbf45780a167d6fa4b9619a0");
group.query();
if (group.next()) { //since if it is used it will return 1 record only
return group.user; //where is group is GlideRecorded variable & user is field from sys_user_grmember table
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-08-2020 02:02 AM
hi
i am getting 1st log but it is not goin inside if/else.. please check below code,
and my workflow getting cancelled
gs.info("Approver count: " + approverList.length + " - " + approverList);
if (approverList.length == 0) {
approverList.push(gs.getUserID());
gs.info("approverListlast: " + approverList.length + " - " + approverList);
return approverList;
} else {
var group = new GlideRecord("sys_user_grmember");
group.addQuery("group", "d0b0871adbf45780a167d6fa4b9619a0");
group.query();
if (group.next()) { //since if it is used it will return 1 record only
gs.info("grouplast: " + group.length + " - " + group);
return group.user; //where is group is GlideRecorded variable & user is field from sys_user_grmember table
}
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-08-2020 02:12 AM
What is first log returning a number more than '0'? If so it will go to Else part of the script.
gs.info("grouplast: " + group.length + " - " + group); will always give you 1 as its used inside loop. Try using it just after line group.query();
Try below
gs.info("Approver count: " + approverList.length + " - " + approverList);
if (approverList.length == 0) {
approverList.push(gs.getUserID());
gs.info("approverListlast: " + approverList.length + " - " + approverList);
return approverList;
} else {
var group = new GlideRecord("sys_user_grmember");
group.addQuery("group", "d0b0871adbf45780a167d6fa4b9619a0");
group.query();
gs.info("grouplast: " + group.getRowCount()+ " - " + group.group.getDisplayValue());
if (group.next()) { //since if it is used it will return 1 record only
return group.user; //where is group is GlideRecorded variable & user is field from sys_user_grmember table
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-08-2020 03:51 AM
Approver count: 1 - 867f2008dbc3d780626ce9ec0b961912 - log
but i got as error