Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

MRVS - List collector / Notification multiple values

Niels Toulorge
Tera Contributor

Hello every one,

 

I need to send a notification from a RITM (with an email script) containing mutiple values in a List collector of a MVRS, I've got some issue.

 

I have a MRVS with 2 Lists collector : 

Capture.JPG

In the notification, it works when only 1 user/profile is selected in each row with this code :

 

 for (var i = 0; i < rowCount; i++) {
            template.print("<tr>");
            var row = mrvs.getRow(i);
            template.print("<td>" + getName(row.collaborateur_test.toString(),'sys_user') + "</td>");
            template.print("<td>" +  getName(row.profil_test.toString(),'question_choice') + "</td>");
            template.print("</tr>");

 

But when mutiple users or profile are selected in the same row, it doesn't work (return "Undefined", like the example below) : 

Capture2.JPG
Without the "getName", the notification return the list of the user's Sys_ID, separate by comma, example : 2fcc62f087f6aa1061d4ec6e8bbb35d8,59bc6ab087f6aa1061d4ec6e8bbb351c 
 
I think it's beacuse "getName" can't catch the sys_ID of each user.

Any idea ?

 

Ps : sorry for my bad english and my lack of knowledge in code.

1 ACCEPTED SOLUTION

@Niels Toulorge 

the reason it's working is because for the 1st row it has only 1 user

In the 2nd row there are more than 1 sysIds and hence it's breaking

update the getName() function as this and it will work for sure

function getName(sys_id, tblName) {
        var arr = [];
        var rec = new GlideRecord(tblName);
        rec.addQuery('sys_id', 'IN', sys_id.toString());
        rec.query();
        while (rec.next()) {
            arr.push(rec.getDisplayValue());
        }
        return arr.toString();
    }

💡 If my response helped, please mark it as correct and close the thread 🔒— this helps future readers find the solution faster! 🙏

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

View solution in original post

11 REPLIES 11

@Niels Toulorge 

the reason it's working is because for the 1st row it has only 1 user

In the 2nd row there are more than 1 sysIds and hence it's breaking

update the getName() function as this and it will work for sure

function getName(sys_id, tblName) {
        var arr = [];
        var rec = new GlideRecord(tblName);
        rec.addQuery('sys_id', 'IN', sys_id.toString());
        rec.query();
        while (rec.next()) {
            arr.push(rec.getDisplayValue());
        }
        return arr.toString();
    }

💡 If my response helped, please mark it as correct and close the thread 🔒— this helps future readers find the solution faster! 🙏

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

I know the cause but absolutly not how to solve it x)

 

I tried and it works like a charm !

Thank you so much !