To include MultiRow variable set informations as a dynamic HTML table into Email notifications
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-09-2024 03:32 AM - edited 09-09-2024 10:02 PM
Create a email notification script "mrvsInfo" and add it in to the required email notifications with this syntax -> ${mail_script:mrvsInfo}
name: mrvsInfo
script:
(function runMailScript( /* GlideRecord */ current, /* TemplatePrinter */ template,
/* Optional EmailOutbound */
email, /* Optional GlideRecord */ email_action,
/* Optional GlideRecord */
event) {
// Fetch the MRVS data and display them as table in notification
var catItem, currentRitmSysId, mrvsTitle, mrvsSysID, queri, msg, varNameArray = [],
varQuestionArray = [];
currentRitmSysId = current.sys_id.toString();
catItem = current.cat_item.toString();
var checkIO = new GlideRecord('io_set_item');
checkIO.addEncodedQuery('variable_set.type=one_to_many^sc_cat_item=' + catItem);
checkIO.query();
while (checkIO.next()) {
mrvsTitle = checkIO.variable_set.title.toString();
mrvsSysID = checkIO.variable_set.sys_id.toString();
var variable = new GlideRecord('item_option_new');
variable.addEncodedQuery('variable_set=' + mrvsSysID);
variable.orderBy('order');
variable.query();
while (variable.next()) {
varNameArray.push(variable.sys_id.toString());
varQuestionArray.push(variable.question_text.toString());
}
var qnLength = varNameArray.length;
varNameArray = varNameArray.toString().split(',');
var headerRowWidt = 100 / qnLength;
var rowIndexArr = [],
newRowIndex, rowLength;
var record = new GlideRecord('sc_multi_row_question_answer');
record.addQuery('parent_idSTARTSWITH' + currentRitmSysId + '^variable_set=' + mrvsSysID);
record.orderBy('row_index');
record.query();
while (record.next()) {
rowIndexArr.push(record.row_index.toString());
}
var au = new ArrayUtil();
newRowIndex = au.unique(rowIndexArr);
rowLength = newRowIndex.length;
newRowIndex = newRowIndex.toString().split(',');
//MRVS Table construction in HTML
if (mrvsTitle) {
template.print("<br><b>" + mrvsTitle + " :</b><br><br>");
template.print('<table border =1>');
template.print('<tr bgcolor = "#EEEEEE">');
for (var i = 0; i < varQuestionArray.length; i++) {
template.print('<th style="width:' + headerRowWidt + '%"><span style="font-family: arial, helvetica, sans-serif; font-size: 10pt;">' + varQuestionArray[i] + '</span></th>');
}
template.print("</tr>");
for (j = 0; j < rowLength; j++) {
msg = '';
for (var k = 0; k < qnLength; k++) {
queri = 'parent_idSTARTSWITH' + currentRitmSysId + '^variable_set=' + mrvsSysID + '^row_index=' + newRowIndex[j] + '^item_option_new=' + varNameArray[k];
var record2 = new GlideRecord('sc_multi_row_question_answer');
record2.addEncodedQuery(queri);
record2.query();
if (record2.next()) {
msg += '<td><span style="font-family: arial, helvetica, sans-serif; font-size: 10pt;">' + record2.value.getDisplayValue() + '</span></td>';
}
}
template.print('<tr>' + msg + '</tr>');
}
template.print("</table>");
}
}
})(current, template, email, email_action, event);
//This function accept sys_id and table and returns the Display name.
function getName(sys_id, tblName) {
var rec = new GlideRecord(tblName);
if (rec.get(sys_id)) {
return rec.getDisplayValue();
}
}
#mrvs #multiRow #dynamicMRVS
0 REPLIES 0