
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-06-2022 08:14 PM
Hi ,
Looking for suggestions to improve this script.
I have a requirement to know if a group has only one member in it and that member is a Requested by user.
For this, I created the below script include which is taking userID & GroupID as inputs and checks if the given user is the only available member of the group.
Any suggestions to achieve this without using a GlideRecord inside GlideAggregate...
isUser_the_OnlyMember: function(userID,groupID)
{
var grCheckMemCount = new GlideAggregate('sys_user_grmember');
grCheckMemCount.addQuery('group', groupID);
grCheckMemCount.addQuery('user.active',true);
grCheckMemCount.addAggregate('COUNT');
grCheckMemCount.query();
if(grCheckMemCount.next())
{
if(grCheckMemCount.getAggregate('COUNT') == 1)
{
gs.print("Group has only one member");
//Creating a GlideRecord since Im not able access any value of grCheckMemCount after the getAggregate.
var grUserIsOnlyMem = new GlideRecord('sys_user_grmember');
grUserIsOnlyMem.addQuery('group',groupID);
grUserIsOnlyMem.query();
if(grUserIsOnlyMem.next())
{
if(grUserIsOnlyMem.user == userID)
return true;
else
{return false;}
}
}
else{
return false;
}
}
Solved! Go to Solution.
- Labels:
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-06-2022 09:33 PM
Hi,
got it
then the only way is what you mentioned OR the other approach I mentioned
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-06-2022 08:36 PM
Hi,
another option
isUser_the_OnlyMember: function(userID,groupID)
{
var grUserIsOnlyMem = new GlideRecord('sys_user_grmember');
grUserIsOnlyMem.addQuery('group',groupID);
grUserIsOnlyMem.addQuery('user.active',true);
grUserIsOnlyMem.query();
var totalCount = grUserIsOnlyMem.getRowCount();
var flag;
// if count is 0 or more than 1 member
if(totalCount > 1 || totalCount == 0){
flag = false;
}
else if(totalCount == 1){
grUserIsOnlyMem.next();
if(grUserIsOnlyMem.user == userID)
flag = true;
else
flag = false;
}
return flag;
},
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-06-2022 08:51 PM
Thanks Ankur. I avoided getRowCount() as it is not recommended. Wont it impact the performance of script especially if a group has many members like 1000s?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-06-2022 09:02 PM
Hi,
try this and no need of GlideRecord
isUser_the_OnlyMember: function(userID,groupID)
{
var grCheckMemCount = new GlideAggregate('sys_user_grmember');
grCheckMemCount.addAggregate('count');
grCheckMemCount.orderByAggregate('count');
grCheckMemCount.groupBy('user');
grCheckMemCount.addQuery('group', groupID);
grCheckMemCount.addQuery('user.active',true);
grCheckMemCount.query();
if(grCheckMemCount.next())
{
if(grCheckMemCount.getAggregate('COUNT') == 1)
{
var user = grCheckMemCount.user;
if(user == userID)
return true;
else
{return false;}
}
}
else{
return false;
}
}
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-06-2022 09:20 PM
This fails for the below given scenario,
Group ID : A group abc having more than one member
UserID: First available member of the group abc
Grouping by USER is making the below condition true all time
grCheckMemCount.getAggregate('COUNT') == 1
Aggregate object will have one record for each user in the group