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.

Show MultiRow variable set in approval email notification

NIcollas Viggia
Tera Contributor

Hi, i am trying to retrieve variables from a Multirow variable set to an approval notification (sysapproval_approver table), but i am have trouble with that, i tried some solutions that i have seen in the forum, but that doesn't work for me. Below the email script that i am trying to use.

 

(function runMailScript(/* GlideRecord */ current, /* TemplatePrinter */ template,
          /* Optional EmailOutbound */ email, /* Optional GlideRecord */ email_action,
          /* Optional GlideRecord */ event) {
	var record = new GlideRecord('sc_req_item');
    var sysCurrentRecordSysId = current.sys_id;
    record.addQuery('sys_id', sysCurrentRecordSysId);
    record.query();
	while (record.next()) {
//Note, the value is a JSON string, so we parse it back into an obect to make it easier to work with
        var obj = JSON.parse(record.variables.request_information); //update with your variable set name
	for(var i=0; i<obj.length; i++) {
	template.print('<br/>' + 'System: ' + obj[i].system_name); 
	template.print('<br/>' + 'Profile: ' + obj[i].profile_name);
	template.print('<br/>' + 'Approver: ' + obj[i].aprovador_do_perfil);
// you copy and paste the template.print line and add more variables here	
		}
	}
}

)(current, template, email, email_action, event);

Below what is showing in the notification, its only retrieve the catalog variables and not the multirow that i setup in the mail script

find_real_file.png

1 ACCEPTED SOLUTION

@NIcollas Viggiano 

Glad to know.

For that sysId you need to query the table being referred by that variable and then get the display value

(function runMailScript(/* GlideRecord */ current, /* TemplatePrinter */ template,
          /* Optional EmailOutbound */ email, /* Optional GlideRecord */ email_action,
          /* Optional GlideRecord */ event) {

    
    var record = new GlideRecord('sc_req_item');
    var sysCurrentRecordSysId = current.sysapproval;
    record.addQuery('sys_id', sysCurrentRecordSysId);
    record.query();
    if (record.next()) {
        var obj = JSON.parse(record.variables.request_information); //update with your variable set name
        for(var i=0; i<obj.length; i++) {

            var rec = new GlideRecord('tableReferredBySystemName');
            rec.get(obj[i].system_name);

            var rec1 = new GlideRecord('tableReferredByProfileName');
            rec1.get(obj[i].profile_name);

            template.print('<br/>' + 'System: ' + rec.getDisplayValue()); 
            template.print('<br/>' + 'Profile: ' + rec1.getDisplayValue());
            template.print('<br/>' + 'Approver: ' + obj[i].aprovador_do_perfil);
        }
    }
}

)(current, template, email, email_action, event);

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards
Ankur

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

View solution in original post

16 REPLIES 16

Thanks Ankur, now its working perfectly.

Hello Ankur,

Hope your doing well.
I am trying to print both variable and multiple row variable set data on the approver email notification.
can you help me with this?

@Insider 

Could you raise a new thread for this and tag me there?

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