- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-18-2020 04:01 AM
Hello guys,
For a catalog request, i want to update all the incidents. Where assigned or caller is a user who is part of requester's group/groups.
Using below script to get the information. But it is very time taking, as i have to parse multiple incidents.
Could anybody suggest me a better way to do this
var sg = new GlideRecord('sys_user_grmember');
sg.addQuery('user', requester);
sg.query();
var group_list = [];
var num = sg.getRowCount();
while (sg.next()) {
gs.info('groups found' + num);
group_list.push(sg.group);
}
for (var j = 0; j < group_list.length; j++) {
var users = [];
var grp = new GlideRecord('sys_user_grmember');
grp.addQuery('group', group_list[j]);
grp.query();
while (grp.next()) {
users.push(grp.user);
gs.info('user name ' + users[j].getDisplayValue());
}
}
Solved! Go to Solution.
- Labels:
-
Request Management
-
Service Catalog
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-19-2020 04:40 AM
You got above code working right? So "requester" variable is already set somewhere in the code?
Then this will improve the speed. It will only trigger 2 queries instead of 1 query, plus additional queries for each group:
var sg = new GlideRecord('sys_user_grmember');
sg.addQuery('user', requester);
sg.query();
var group_list = [];
var num = sg.getRowCount();
while (sg.next()) {
gs.info('groups found' + num);
group_list.push(sg.group);
}
var users = [];
var grp = new GlideRecord('sys_user_grmember');
grp.addQuery('group', 'IN', group_list);
grp.query();
while (grp.next()) {
users.push(grp.getUniqueValue());
gs.info('user name ' + grp.getDisplayValue());
}
//now you have an array of users you can use for an "IN" on the incident table
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-18-2020 04:11 AM
You can try this:
var group_list = gs.getUser().getMyGroups();
for (var j = 0; j < group_list.length; j++) {
var users = [];
var grp = new GlideRecord('sys_user_grmember');
grp.addQuery('group', group_list[j]);
grp.query();
while (grp.next()) {
users.push(grp.user);
gs.info('user name ' + users[j].getDisplayValue());
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-18-2020 04:13 AM
or even better:
var group_list = gs.getUser().getMyGroups();
var users = [];
var grp = new GlideRecord('sys_user_grmember');
grp.addQuery('group', "IN", group_list);
grp.query();
while (grp.next()) {
users.push(grp.user);
gs.info('user name ' + grp.user.getDisplayValue());
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-18-2020 04:32 AM
Hi Willem,
Thanks for the response. But i am trying to execute this on a catalog request.
There is a requester name field, using whose name i need to gather their groups and users who are part of those groups
current.requester_name.getGroups() ?
I am not sure what to use..
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-18-2020 04:38 AM
Can you try with:
gs.getUserByID(current.requester_name).getGroups()