- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ā10-09-2020 01:46 PM
Hi,
some one suggest me about this use case how to solve
I created a notification, just update it a bit as below
but that notification has to carry only modified variables details only with Old value , new value of variable when we change variable value in RITM
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ā10-15-2020 01:08 AM
please update as below and try once
(function runMailScript( /* GlideRecord */ current, /* TemplatePrinter */ template,
/* Optional EmailOutbound */
email, /* Optional GlideRecord */ email_action,
/* Optional GlideRecord */
event) {
template.print("<b>Summary of items:\n</b>");
var notiBodyString = event.parm2;
var parsedData = JSON.parse(notiBodyString);
template.print('<br>');
gs.info("parsedData" + parsedData);
template.print('parsedData----------' + parsedData + '\n' + '\n');
var notiLength = parsedData.length;
template.print('<br>');
gs.info('notiLength' + notiLength);
template.print('notiLength----------' + notiLength);
for(var i=0;i<parsedData.length;i++){
template.print('Variable ' + parsedData[i].variableName + ' old value ' + parsedData[i].oldValue + ' new value ' + parsedData[i].currentValue);
}
})(current, template, email, email_action, event);
Regards
Ankur
Ankur
⨠Certified Technical Architect || ⨠9x ServiceNow MVP || ⨠ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ā10-15-2020 01:08 AM
please update as below and try once
(function runMailScript( /* GlideRecord */ current, /* TemplatePrinter */ template,
/* Optional EmailOutbound */
email, /* Optional GlideRecord */ email_action,
/* Optional GlideRecord */
event) {
template.print("<b>Summary of items:\n</b>");
var notiBodyString = event.parm2;
var parsedData = JSON.parse(notiBodyString);
template.print('<br>');
gs.info("parsedData" + parsedData);
template.print('parsedData----------' + parsedData + '\n' + '\n');
var notiLength = parsedData.length;
template.print('<br>');
gs.info('notiLength' + notiLength);
template.print('notiLength----------' + notiLength);
for(var i=0;i<parsedData.length;i++){
template.print('Variable ' + parsedData[i].variableName + ' old value ' + parsedData[i].oldValue + ' new value ' + parsedData[i].currentValue);
}
})(current, template, email, email_action, event);
Regards
Ankur
Ankur
⨠Certified Technical Architect || ⨠9x ServiceNow MVP || ⨠ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ā10-16-2020 09:45 AM
Hope you are doing good.
Let me know if I have answered your question.
If so, please mark appropriate response as correct & helpful so that this thread can be closed and others can be benefited by this.
Regards
Ankur
Ankur
⨠Certified Technical Architect || ⨠9x ServiceNow MVP || ⨠ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ā10-16-2020 12:29 PM
Hi Ankur,
why we are not receiving any response into Email-Script from BR, i didn't understand
kindly take a look below result one
BR script:
(function executeRule(current, previous /*null when async*/ ) {
var question, i, prv1, cur1;
// var obj = {};
var arr = [];
if (current.variables.changes()) {
var cur = current.variables.getElements();
var pvr = previous.variables.getElements();
gs.info('Current Value-' + current.variables.getElements());
gs.info('Previous Value-' + previous.variables.getElements());
for (i = 0; i < cur.length; i++) {
if (cur[i] != pvr[i]) {
var obj = {};
question = cur[i].getQuestion().getLabel();
gs.info('question' + question);
cur1 = cur[i];
gs.info('current value' + cur1);
prv1 = pvr[i];
gs.info('prvious value' + prv1);
obj["variableName"] = cur[i].getQuestion().getLabel();
obj["currentValue"] = cur[i].getQuestion().getDisplayValue();
obj["oldValue"] = pvr[i].getQuestion().getDisplayValue();
arr.push(obj);
}
}
gs.info('Entered');
gs.info("JSON:" + JSON.stringify(obj));
gs.info("Array:" + JSON.stringify(arr));
gs.eventQueue("updateventemail", current, gs.getUserID(),JSON.stringify(arr));
}
})(current, previous);
Email Script:
template.print("<b>Summary of items:\n</b>");
var notiBodyString = event.parm2;
var parsedData = JSON.parse(notiBodyString);
template.print('<br>');
gs.info("parsedData" + parsedData);
template.print('parsedData----------' + parsedData + '\n' + '\n');
var notiLength = parsedData.length;
template.print('<br>');
gs.info('notiLength' + notiLength);
template.print('notiLength----------' + notiLength);
for (var i = 0; i < parsedData.length; i++) {
template.print('Variable ' + parsedData[i].variableName + ' old value ' + parsedData[i].oldValue + ' new value ' + parsedData[i].currentValue);
}
here is result:
org.mozilla.javascript.EcmaError: Empty JSON string
Caused by error in Email Script: 'sc_req_item_script_3' at line 4
1: template.print("<b>Summary of items:\n</b>");
2:
3: var notiBodyString = event.parm2;
==> 4: var parsedData = JSON.parse(notiBodyString);
5:
6: template.print('<br>');
7:
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ā10-17-2020 12:48 AM
It seems the json string is empty hence the error
did you check what came for this in logs?
gs.info("Array:" + JSON.stringify(arr));
if it came then it should come in email script as well
Also remove event parameter 2 contains recipient checkbox for your notification
Regards
Ankur
Ankur
⨠Certified Technical Architect || ⨠9x ServiceNow MVP || ⨠ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ā10-17-2020 11:38 AM