How to get group members in list collector?

vardhini
Kilo Expert

Hi All,

How to add group members in list collector variable,after selecting the group name.

I have used below code but ,It is not working for me.Can you please correct my code.

Script Include:

var GroupMembers = Class.create();
GroupMembers.prototype = Object.extendsObject(AbstractAjaxProcessor, {

getMembers: function() {

//var user_array = [];
var grpID = this.getParameter('sysparm_gid');
var grpMembers = new GlideRecord('sys_user_grmember');
grpMembers.addQuery('group', grpID);
grpMembers.query();
var nArray = [];
var vArray = [];

while (grpMembers.next()) {
nArray.push(grpMembers.user.getDisplayValue().toString());
vArray.push(grpMembers.user.toString());


}

var retValue = nArray.toString() + "," + vArray.toString();
return retValue;

},
type: 'GroupMembers'
});

 

Client Script:

function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
//g_form.setVisible("eu_domain",'');

var ga=new GlideRecord('GroupMembers');
ga.addParam('sysparm_name','getMembers');
ga.addParam('sysparm_gid',newValue);
ga.getXML(membersList);

function membersList(response){
var answer=response.responseXML.documentElement.getAttribute("answer");
var memArray=answer.split(",");
var memNames = memArray[0];
var memValues = memArray[1];
alert(memArray+"msg");
g_form.setValue('eu_domain',memValues);

}

//Type appropriate comment here, and begin script below

}

1 ACCEPTED SOLUTION

Abhijit4
Mega Sage

Hi,

There were few mistakes in your code like you used GlideRecord instead of GlideAjax, I have corrected all.

Please try below,

getMembers: function() {

var user_sys_ids = "";
var grpID = this.getParameter('sysparm_gid');
var grpMembers = new GlideRecord('sys_user_grmember');
grpMembers.addQuery('group', grpID);
grpMembers.query();
while (grpMembers.next()) {
if(user_sys_ids=="")
user_sys_ids=grpMembers.user.toString();
}
else{
user_sys_ids=user_sys_ids+","+grpMembers.user.toString();
}
}
return JSON.stringify(user_sys_ids);
},
type: 'GroupMembers'
});

 

function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
//g_form.setVisible("eu_domain",'');

var ga=new GlideAjax('GroupMembers');
ga.addParam('sysparm_name','getMembers');
ga.addParam('sysparm_gid',newValue);
ga.getXML(membersList);

function membersList(response){
var answer=JSON.parse(response.responseXML.documentElement.getAttribute("answer"));
g_form.setValue('eu_domain',answer);
}

}

Let me know if you have any further queries.

Please mark this as Correct or Helpful if it helps.

Thanks and Regards,
Abhijit

By marking my response as correct or helpful, you contribute to helping future readers with similar issues.
Regards,
Abhijit
ServiceNow MVP

View solution in original post

8 REPLIES 8

eu_domain is of type list, right? if sys ids are showing in alert then everything is correct. To set value for list type field, we have to set sys ids only.
By marking my response as correct or helpful, you contribute to helping future readers with similar issues.
Regards,
Abhijit
ServiceNow MVP

Ankur Bawiskar
Tera Patron
Tera Patron

@vardhini@45 

check my article on how to populate list collector based on another variable; it works in native + portal

try to enhance it as per your requirement

Dynamically set list collector on change of variable

If it helps please mark it helpful and also bookmark it

Regards
Ankur

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

When I use alert it showing sysid's

how to convert to names

list collector should refer to sys_user since your script include would return group sys_ids

If you follow my article it will work for both native + portal

Just enhance to show group members.

Regards
Ankur

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader