select random user from group

Deepthi13
Tera Expert

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;
}
}   

15 REPLIES 15

Jaspal Singh
Mega Patron
Mega Patron

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
}
}   

hi @Jaspal Singh 

i am getting 1st log but it is not goin inside if/else.. please check below code,

and my workflow getting cancelled

find_real_file.png

 

  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
}

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
}
}

Approver count: 1 - 867f2008dbc3d780626ce9ec0b961912  - log

but i got as error

find_real_file.png