- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-14-2025 01:43 AM - edited ‎04-14-2025 02:23 AM
Based on the inputs Action output should dynamically change the mail and assignee list.
if they select approval type as Individual and approver value is not empty we should take input as approver and it should give approver mail and his sys id as out put.
If they select approval type as Group-Anyone or Group-Everyone and group value is not empty it should process group and should give its members approver mails and their sys ids.
If they select approval type as Group-Everyone and Approval list is not empty then it should process the approval list values which are coming as array list.
Ex. I am pushing approval list as below.
but the below script is not giving me result as expected? can some one check what went wrong??
(function execute(inputs, outputs) {
var emails = [];
var assignee = [];
if (inputs.group_sysId && (inputs.approval_type == "Anyone") || (inputs.approval_type == "Everyone" )) {
var groupmembers = new GlideRecord("sys_user_grmember"); // Gllding the group member table
groupmembers.addQuery("group", inputs.group_sysId); // Getting goup memebers associated with group
groupmembers.query();
gs.log("AE the count of members "+groupmembers.getRowCount());
while (groupmembers.next()) {
emails.push(groupmembers.user.email.toString()); //Pusing all approver emails to array
assignee.push(groupmembers.user.toString()); //Pusing all approver sysIds to array
}
outputs.emaillist = emails.join(';');
outputs.assigneelist = assignee.toString();
gs.log("AE email list is "+outputs.emaillist);
gs.log("AE assignee list is "+outputs.assigneelist);
}
else if(inputs.approver_sysId && inputs.approval_type == "Individual"){
var userGr = new GlideRecord("sys_user");
userGr.get(inputs.approver_sysId);
outputs.emaillist = userGr.email; // assigning approver email
outputs.assigneelist = userGr.sys_id; //assigning approver sys ID
gs.log("AE email list is "+outputs.emaillist);
gs.log("AE assignee list is "+outputs.assigneelist);
}
else if(inputs.approver_list && inputs.approval_type == "Everyone"){
var userGr1 = new GlideRecord("sys_user");
userGr1.addEncodedQuery("sys_idIN"+inputs.approver_list);
userGr1.query();
while(userGr1.next()){
emails.push(userGr1.email.toString()); //Pusing all approver emails to array
assignee.push(userGr1.sys_id.toString()); //Pusing all approver sysIds to array
}
outputs.emaillist = emails.join(';').toString();
outputs.assigneelist = assignee.toString();
gs.log("AE emails list without output "+emails);
gs.log("AE email list is "+outputs.emaillist);
gs.log("AE assignee list is "+outputs.assigneelist);
}
else{
gs.error("Approval type might empty or just pass only one approval type value");
}
})(inputs, outputs);
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-14-2025 02:04 AM
so what debugging did you do?
try using this and check the logs
(function execute(inputs, outputs) {
var emails = [];
var assignee = [];
if (inputs.group_sysId && (inputs.approval_type == "Anyone" || inputs.approval_type == "Everyone")) {
var groupmembers = new GlideRecord("sys_user_grmember");
groupmembers.addQuery("group", inputs.group_sysId);
groupmembers.query();
gs.log("AE the count of members " + groupmembers.getRowCount());
while (groupmembers.next()) {
emails.push(groupmembers.user.email.toString());
assignee.push(groupmembers.user.sys_id.toString());
}
outputs.emaillist = emails.join(';');
outputs.assigneelist = assignee.join(';');
gs.log("AE email list is " + outputs.emaillist);
gs.log("AE assignee list is " + outputs.assigneelist);
} else if (inputs.approver_sysId && inputs.approval_type == "Individual") {
var userGr = new GlideRecord("sys_user");
userGr.get(inputs.approver_sysId);
outputs.emaillist = userGr.email.toString();
outputs.assigneelist = userGr.sys_id.toString();
gs.log("AE email list is " + outputs.emaillist);
gs.log("AE assignee list is " + outputs.assigneelist);
} else if (inputs.approver_list && inputs.approval_type == "Everyone") {
var userGr1 = new GlideRecord("sys_user");
userGr1.addEncodedQuery("sys_idIN" + inputs.approver_list);
userGr1.query();
while (userGr1.next()) {
emails.push(userGr1.email.toString());
assignee.push(userGr1.sys_id.toString());
}
outputs.emaillist = emails.join(';');
outputs.assigneelist = assignee.join(';');
gs.log("AE emails list without output " + emails);
gs.log("AE email list is " + outputs.emaillist);
gs.log("AE assignee list is " + outputs.assigneelist);
} else {
gs.error("Approval type might be empty or just pass only one approval type value");
}
})(inputs, outputs);
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-14-2025 02:04 AM
so what debugging did you do?
try using this and check the logs
(function execute(inputs, outputs) {
var emails = [];
var assignee = [];
if (inputs.group_sysId && (inputs.approval_type == "Anyone" || inputs.approval_type == "Everyone")) {
var groupmembers = new GlideRecord("sys_user_grmember");
groupmembers.addQuery("group", inputs.group_sysId);
groupmembers.query();
gs.log("AE the count of members " + groupmembers.getRowCount());
while (groupmembers.next()) {
emails.push(groupmembers.user.email.toString());
assignee.push(groupmembers.user.sys_id.toString());
}
outputs.emaillist = emails.join(';');
outputs.assigneelist = assignee.join(';');
gs.log("AE email list is " + outputs.emaillist);
gs.log("AE assignee list is " + outputs.assigneelist);
} else if (inputs.approver_sysId && inputs.approval_type == "Individual") {
var userGr = new GlideRecord("sys_user");
userGr.get(inputs.approver_sysId);
outputs.emaillist = userGr.email.toString();
outputs.assigneelist = userGr.sys_id.toString();
gs.log("AE email list is " + outputs.emaillist);
gs.log("AE assignee list is " + outputs.assigneelist);
} else if (inputs.approver_list && inputs.approval_type == "Everyone") {
var userGr1 = new GlideRecord("sys_user");
userGr1.addEncodedQuery("sys_idIN" + inputs.approver_list);
userGr1.query();
while (userGr1.next()) {
emails.push(userGr1.email.toString());
assignee.push(userGr1.sys_id.toString());
}
outputs.emaillist = emails.join(';');
outputs.assigneelist = assignee.join(';');
gs.log("AE emails list without output " + emails);
gs.log("AE email list is " + outputs.emaillist);
gs.log("AE assignee list is " + outputs.assigneelist);
} else {
gs.error("Approval type might be empty or just pass only one approval type value");
}
})(inputs, outputs);
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-18-2025 08:25 PM
Hope you are doing good.
Did my reply answer your question?
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader