- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-04-2019 02:34 AM
Hi All,
Would like to seek some help here as I'm not able to display the MRVS table in the Approval email notification but those variables that outside the MRVS do display accordingly.
Here is the code, and if someone can point me out where goes wrong?
Thanks in advance.
(function runMailScript(/* GlideRecord */ current, /* TemplatePrinter */ template,
/* Optional EmailOutbound */ email, /* Optional GlideRecord */ email_action,
/* Optional GlideRecord */ event) {
template.print("Summary of Requested items:<br />");
var set = new GlideappVariablePoolQuestionSet();
set.setRequestID(current.getValue('sysapproval'));
set.load();
var vs = set.getFlatQuestions();
for (var i = 0; i < vs.size(); i++) {
if (vs.get(i).getLabel() != '' && vs.get(i).getDisplayValue()!='' && vs.get(i).getDisplayValue()!='false') {
template.space(4);
template.print(vs.get(i).getLabel() + " = " + vs.get(i).getDisplayValue() + "<br/>");
}
var mrvs;
var rowCount;
var ritmGR = new GlideRecord('sc_req_item');
if (ritmGR.get(current.sys_id)) {
mrvs = ritmGR.variables.book_details; //multi row variable set info
rowCount = mrvs.getRowCount();
if(rowCount >= 0){
template.print('<table border="1px solid black" style="font-family:Arial">');
template.print( "<tr bgcolor='#ddd'align='center'>" );
template.print("<td style='text-align:center' colspan='10'><strong>Book Details</strong></td>");
template.print( "</tr>" );
template.print( "<tr>" );
template.print( "<td><center><b>Type</b></center></td>" );
template.print( "<td><center><b>Title </b></center></td>" );
template.print( "<td><center><b>Subtitle</b></center></td>" );
template.print( "<td><center><b>Author / Editor</b></center></td>" );
template.print( "<td><center><b>Year of Published</b></center></td>" );
template.print( "<td><center><b>International Standard Book Number</b></center></td>" );
template.print( "<td><center><b>Publisher</b></center></td>" );
template.print( "<td><center><b>URL</b></center></td>" );
template.print( "<td><center><b>Estimated Price (SGD)</b></center></td>" );
template.print( "</tr>" );
var mvrs = current.variables.book_details;
var ritm = current.getUniqueValue();
var rowCount2 = mvrs.getRowCount();
for (var a = 0; a < rowCount2; a++) {
var row = mvrs.getRow(a);
template.print( "<tr>" );
template.print( "<td><center>" +row.type + "</center></td>" );
template.print( "<td><left>" +row.title + "</left></td>" );
template.print( "<td><left>" +row.subtitle + "</left></td>" );
template.print( "<td><left>" +row.author_editor + "</left></td>" );
template.print( "<td><center>" +row.year_of_published + "</center></td>" );
template.print( "<td><left>" +row.international_standard_book_number_isbn + "</left></td>" );
template.print( "<td><left>" +row.publisher + "</left></td>" );
template.print( "<td><left>" +row.url + "</left></td>" );
template.print( "<td><center>" +row.estimated_price_sgd + "</center></td>" );
template.print( "</tr>" );
}
template.print('</table>');
}}})(current, template, email, email_action, event);
Solved! Go to Solution.
- Labels:
-
Service Catalog

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-04-2019 08:12 AM
instead of using current.sys_id , replace it with current.sysapproval
try now.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-04-2019 05:47 AM
Hi, still not working. Not sure why. The MRVS still not displayed out.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-04-2019 05:53 AM
i tested with below code in my personal instance on background script and it has displayed the result.
i am adding the small code which i have tested , you can validate in background script and then share your result.
var mrvs;
var rowCount;
var ritmGR = new GlideRecord('sc_req_item');
if (ritmGR.get('e57c21f1dbcfbf00e4d95740cf961970')) { // sysid of the RITM.
mrvs = ritmGR.variables.test; //multi row variable set info
var obj = JSON.parse(mrvs);
for (var i=0 ; i < obj.length; i++) {
gs.print(obj[i].name + obj[i].location); // my variables in MRVS.
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-04-2019 06:04 AM
Hi, with that script I managed to get the output; for this case is Book.
But weird is why my whole script is not returning it?
I reattached again the script here. And the variable of 'i' has been declared before so I change it to 'a' instead.
(function runMailScript(/* GlideRecord */ current, /* TemplatePrinter */ template,
/* Optional EmailOutbound */ email, /* Optional GlideRecord */ email_action,
/* Optional GlideRecord */ event) {
template.print("Summary of Requested items:<br />");
var set = new GlideappVariablePoolQuestionSet();
set.setRequestID(current.getValue('sysapproval'));
set.load();
var vs = set.getFlatQuestions();
for (var i = 0; i < vs.size(); i++) {
if (vs.get(i).getLabel() != '' && vs.get(i).getDisplayValue()!='' && vs.get(i).getDisplayValue()!='false') {
template.space(4);
template.print(vs.get(i).getLabel() + " = " + vs.get(i).getDisplayValue() + "<br/>");
}
}
var mrvs;
var rowCount;
var ritmGR = new GlideRecord('sc_req_item');
if (ritmGR.get(current.sys_id)) {
mrvs = ritmGR.variables.book_details; //multi row variable set info
rowCount = mrvs.getRowCount();
if(rowCount >= 0){
template.print('<table border="1px solid black" style="font-family:Arial">');
template.print( "<tr bgcolor='#ddd'align='center'>" );
template.print("<td style='text-align:center' colspan='10'><strong>Book Details</strong></td>");
template.print( "</tr>" );
template.print( "<tr>" );
template.print( "<td><center><b>Type</b></center></td>" );
template.print( "<td><center><b>Title </b></center></td>" );
template.print( "<td><center><b>Subtitle</b></center></td>" );
template.print( "<td><center><b>Author / Editor</b></center></td>" );
template.print( "<td><center><b>Year of Published</b></center></td>" );
template.print( "<td><center><b>International Standard Book Number</b></center></td>" );
template.print( "<td><center><b>Publisher</b></center></td>" );
template.print( "<td><center><b>URL</b></center></td>" );
template.print( "<td><center><b>Estimated Price (SGD)</b></center></td>" );
template.print( "</tr>" );
var mvrs = current.variables.book_details;
var obj = JSON.parse(mrvs);
for (var a=0 ; a < obj.length; a++) {
template.print( "<tr>" );
template.print( "<td><center>" +obj[a].type + "</center></td>" );
template.print( "<td><left>" +obj[a].title + "</left></td>" );
template.print( "<td><left>" +obj[a].subtitle + "</left></td>" );
template.print( "<td><left>" +obj[a].author_editor + "</left></td>" );
template.print( "<td><center>" +obj[a].year_of_published + "</center></td>" );
template.print( "<td><left>" +obj[a].international_standard_book_number_isbn + "</left></td>" );
template.print( "<td><left>" +obj[a].publisher + "</left></td>" );
template.print( "<td><left>" +obj[a].url + "</left></td>" );
template.print( "<td><center>" +obj[a].estimated_price_sgd + "</center></td>" );
template.print( "</tr>" );
}
template.print('</table>');
}}})(current, template, email, email_action, event);
And this is the result in background script for above script;

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-04-2019 06:09 AM
i think there is typo
var mvrs = current.variables.book_details;
var obj = JSON.parse(mvrs);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-04-2019 06:22 AM
Still no joy.
When you say yours are working, is it on email notification for approval?
Because I tested for email notification to the requested item is ok, but not for approval.