Action out put is not giving expected output??

Manikantahere
Tera Contributor

Based on the inputs Action output should dynamically change the mail and assignee list.

AC-1.png

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.

AC-2.png


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



1 ACCEPTED SOLUTION

Ankur Bawiskar
Tera Patron
Tera Patron

@Manikantahere 

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.

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

View solution in original post

2 REPLIES 2

Ankur Bawiskar
Tera Patron
Tera Patron

@Manikantahere 

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.

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

@Manikantahere 

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.

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader