Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

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