- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-18-2024 01:02 AM
Hi!
I have created a value named "approver_group" that refs sys_user_group table, and I want to auto populate approver's group in it.
Please let me know what scripts or setting is needed.
Below are the settings for the other variables.
"applicant": shows logged in user's name.
Refs sys_user Table.
Defaualt Value :
javascript:gs.getUserID()
"applicant_group": shows loggedin user's group.
Refs sys_user_group Table.
Defaualt Value :
javascript: var showGroup;
var gr = new GlideRecord("sys_user_grmember");
gr.addQuery("user", gs.getUserID());
gr.query();
if (gr.next()) {
showGroup = gr.group.toString();
}
showGroup;
"approver": shows logged in user's manager name.
Refs sys_user Table.
Default Value :
javascript: (function() {
var applicantGroup = current.variables.applicant_group;
var managerSysId = '';
if (applicantGroup) {
var grGroup = new GlideRecord('sys_user_group');
if (grGroup.get(applicantGroup)) {
managerSysId = grGroup.manager.toString();
}
}
return 'sys_id=' + managerSysId;
})();
Thank you.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-18-2024 05:52 AM - edited 01-18-2024 05:58 AM
Hi @KellyLewins
I think to auto-populate the "approver_group" field with the manager's group of the logged-in user, you can Create an OnLoad client script:
function onLoad() {
var userId = g_user.userID;
var userGroups = getUserGroups(userId);
var managerGroup = getManagerGroup(userGroups);
// set the value of "approver_group" field
g_form.setValue('approver_group', managerGroup);
}
function getUserGroups(userId) {
var userGroups = [];
// query the sys_user_grmember table to get groups of the user
var grGroupMember = new GlideRecord('sys_user_grmember');
grGroupMember.addQuery('user', userId);
grGroupMember.query();
while (grGroupMember.next()) {
userGroups.push(grGroupMember.group.toString());
}
return userGroups;
}
function getManagerGroup(userGroups) {
// Iterate through user's groups and find the manager's group
for (var i = 0; i < userGroups.length; i++) {
var grGroup = new GlideRecord('sys_user_group');
if (grGroup.get(userGroups[i])) {
var managerSysId = grGroup.manager.toString();
if (managerSysId) {
var managerGroup = grGroup.name.toString();
return managerGroup;
}
}
}
return ''; // return an empty string if manager's group is not found
}
Please, don't forget to mark my answer as correct if it solves your issue or mark it as helpful if it is relevant for you!
Regards,
Tushar
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-18-2024 05:26 AM
Hi @KellyLewins
If the user is part of more than 1 group?
If my response proves useful, please indicate its helpfulness by selecting " Accept as Solution" and " Helpful." This action benefits both the community and me.
Regards
Dr. Atul G. - Learn N Grow Together
ServiceNow Techno - Functional Trainer
LinkedIn: https://www.linkedin.com/in/dratulgrover
YouTube: https://www.youtube.com/@LearnNGrowTogetherwithAtulG
Topmate: https://topmate.io/atul_grover_lng [ Connect for 1-1 Session]
****************************************************************************************************************
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-18-2024 05:45 AM
Hi @KellyLewins,
Try below script
(function() {
var applicantGroup = current.variables.applicant_group;
var managerSysId = '';
if (applicantGroup) {
var grGroup = new GlideRecord('sys_user_group');
if (grGroup.get(applicantGroup)) {
var managerSysId = grGroup.manager.toString();
}
}
var managerGroup = '';
if (managerSysId) {
var grManager = new GlideRecord('sys_user_group');
if (grManager.get(managerSysId)) {
managerGroup = grManager.name.toString();
}
}
return managerGroup;
})();
Mark it as helpful and solution proposed if it serves your purpose.
Thanks,
Anand
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-18-2024 05:52 AM - edited 01-18-2024 05:58 AM
Hi @KellyLewins
I think to auto-populate the "approver_group" field with the manager's group of the logged-in user, you can Create an OnLoad client script:
function onLoad() {
var userId = g_user.userID;
var userGroups = getUserGroups(userId);
var managerGroup = getManagerGroup(userGroups);
// set the value of "approver_group" field
g_form.setValue('approver_group', managerGroup);
}
function getUserGroups(userId) {
var userGroups = [];
// query the sys_user_grmember table to get groups of the user
var grGroupMember = new GlideRecord('sys_user_grmember');
grGroupMember.addQuery('user', userId);
grGroupMember.query();
while (grGroupMember.next()) {
userGroups.push(grGroupMember.group.toString());
}
return userGroups;
}
function getManagerGroup(userGroups) {
// Iterate through user's groups and find the manager's group
for (var i = 0; i < userGroups.length; i++) {
var grGroup = new GlideRecord('sys_user_group');
if (grGroup.get(userGroups[i])) {
var managerSysId = grGroup.manager.toString();
if (managerSysId) {
var managerGroup = grGroup.name.toString();
return managerGroup;
}
}
}
return ''; // return an empty string if manager's group is not found
}
Please, don't forget to mark my answer as correct if it solves your issue or mark it as helpful if it is relevant for you!
Regards,
Tushar