- 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 08:38 AM
If the table contains blank info, it will written as undefined.
Do you know how to fix that?

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-04-2019 08:51 AM
you can add the condition like
sample condition for one variable. same way you can add for other as well.
if(obj[i].type!== undefined)
template.print( "<td><center>" +obj[a].type + "</center></td>" );
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-04-2019 08:16 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-11-2022 08:24 AM
Hello
I have write notification email script which is calling from notification for dynamic table creation, i.e mrvs record store in table. Table column name will be x and y as per screenshot.
(function runMailScript(current, template, email, email_action, event) {
var set = new GlideappVariablePoolQuestionSet();
set.load();
var vs = set.getFlatQuestions();
gs.log('VS Size '+vs.size(),'Test MRVS');
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/>");
}
}
gs.log('Before mrvs','Test MRVS');
var mrvs;
var rowCount;
var ritmGR = new GlideRecord('sn_hr_core_case');
if (ritmGR.get(current.parent_id)) {
gs.log('Coming inside if ','Test MRVS');
template.print('<table border="1px solid black" style="font-family:Arial">');
template.print( "<tr bgcolor='#ddd'align='center'>" );
template.print( "<tr>" );
template.print( "<td><center>Full Name</center></td>" );
var mvrs = ritmGR.variables.xx; //xx mrvs name
gs.log('Result is '+mvrs);
var obj = JSON.parse(mvrs);
for (var a=0 ; a<obj.length; a++) {
gs.log('Sample Result is'+ obj[a].type,'Test MRVS');
template.print( "<tr>" );
template.print( "<td><center>" +obj[a].full_name+ "</center></td>" );
template.print('</table>');
}})(current, template, email, email_action, event);
I have commented this of my requirement not for approval table like that. set.setRequestID(current.getValue('sysapproval'));
Try to achieve in that way, Please let me know the process is correct or not.
Its my urgent requirement. Let me know.