How to display MRVS table in Approval Notification Email

Si Min
Giga Expert

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);
1 ACCEPTED SOLUTION

instead of using current.sys_id , replace it with current.sysapproval

try now. 

View solution in original post

33 REPLIES 33

i would suggest here to add logs in your script. this way you can troubleshoot this. i did not trigger using email script , i just tried to get the values using background script, if we are able to fetch the details then it will also work in email script. 

 

start adding logs from the top to bottom, this way you can identify this issue. check which line is not working in your end. 

what are you getting by below log? it should return json , share the log

var mvrs = current.variables.book_details;
gs.log('Result is '+mvrs);

I inserted the gs log as what you suggested, but I did not get anything. 

It just stops from executing further before the var mrvs. 

did you get json result ? by adding below line. 

 

gs.log('Result is '+mvrs);

 

are you doing it on personal instance ? if yes i can try to quickly troubleshoot it. 

Guess you have replied after I answered your question. 

The execution stop before it goes to var mvrs. 

I'm actually working on my Dev instance and can't really migrate to the personal instance and try cause there are other dependencies. 

can you paste your updated script ? i will add the logs and then you can validate the log table to check the log details.