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

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

Hi Abhijit,

Thanks for reply,

I have used below codes,but Its not worked.

Script Include:

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

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

Client Script:

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

}

 

Please check.

Thanks,

Raj

Hi,

Try below, I have tested it in my PDI, it is working fine.

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

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

 

type: 'GroupMembers'
});

 

Client Script :

Client Script:

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.getXMLAnswer(membersList);

function membersList(response) {
g_form.setValue('eu_domain', response);
}

}

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

I am not sure,I have used the same code .

On change of assignment group,no user list is populating .

can you suggest.

 

Regards,

Raj