How to pass multiple parameters in eventparam1

msm4
Mega Guru

can anyone help me, how we pass multiple parameters in eventparam1.

Thanks.Smitha

4 REPLIES 4

Harsh Vardhan
Giga Patron

use array to store the result and then pass it in eventQueue()

assuming you are using eventQueue()

 

var userList = [];


var userRec = new GlideRecord("sys_user");


userRec.addEncodedQuery(YOUR-ENCODED-QUERY);


userRec.query();


while (userRec.next()) {


       if (userList.toString().indexOf(userRec.sys_id) == -1) {


               userList.push(userRec.sys_id + "");


       }


}


gs.eventQueue("EVENT-NAME", current, userList.toString());

Ankur Bawiskar
Tera Patron
Tera Patron

Hi,

Do you want to send more than 1 value in event parm1?

If yes then form a json object and send it in 3rd parameter of eventQueue() method

Usually recipients are sent in parm1; for sending additional information to the email script you can use parm2

sample script below

var jsonObj = {};
jsonObj.name = 'Abel Tuter';
jsonObj.email = 'abel.tuter@example.com';

gs.eventQueue('Event Name', GlideRecord Obj, recipientArray, JSON.stringify(jsonObj));

In the email script use this to parse the json

var jsonObj = JSON.parse(event.parm2);

var email = jsonObj.email;
var name = jsonObj.name;

Mark Correct if this solves your issue and also mark 👍 Helpful if you find my response worthy based on the impact.
Thanks
Ankur

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Hello Ankur,

I have a similar requirement where i need to populate 'Kb article num + Valid date' in email notification currently only Kb Article num is populating by using below Email script could you please help me out what changes need to be made to populate Valid date along with Kb article.

Email script:

(function runMailScript(current, template, email, email_action, event) {

// Add your code here

var obj = new getEmailBody();
var objSubjectBody = obj.getEmailSubjectBody('metlife.emailScript.kb.artiles.expiry',current.author);
var subject_value = objSubjectBody[0] ;
template.print(objSubjectBody[1] + "</br></br>");
email.setSubject(subject_value);

var know = event.parm2;
var kb = know.split(',');
var instanceURL = gs.getProperty('glide.servlet.uri');
var ui_page;
for(var i =0 ; i <= kb.length ; i++)
{
if(kb[i]){
ui_page = instanceURL+'kb_view.do?sysparm_article='+kb[i];
template.print("<a href="+ui_page+">"+kb[i] + " "+"</a></br>");
}
}

template.print("</br>");
ui_page = instanceURL+'kb_view.do?sysparm_article='+ gs.getProperty('update.expiring.kb.article');
var objSubjectBody2 = obj.getEmailSubjectBody('metlife.emailScripts.kb.knowledge.expiry.articleLink',current.author);
template.print("<a href="+ui_page+">"+objSubjectBody2[1] + " "+"</a></br>");


// prints the email footer

var objSubjectBody1 = obj.getEmailSubjectBody('Automated.email',current.author);
template.print("</br></br>"+objSubjectBody1[1]);







})(current, template, email, email_action, event);

 

 

Scheduled Job:

var kb ='' ;
var kb1 ='' ;
var usr = '';
var group = '';
var days = gs.getProperty('kb.articles.expiry.days');
var qrystr = "active=true^workflow_state=published^valid_toBETWEENjavascript:gs.nowDateTime()@javascript:gs.daysAgo(-"+days+")";
var expdt = new GlideRecord("kb_knowledge");
expdt.addEncodedQuery(qrystr);
expdt.orderByDesc('author');
expdt.query();

while(expdt.next()){

// If author field is not empty and if it is a valid user, send author's email in parm1
// else it is send Author group members email in parm1
if(!gs.nil(expdt.author) && expdt.author.active == true)
{
var id = expdt.author.toString();
if(id != usr){
usr = id;

var str = "active=true^workflow_state=published^valid_toBETWEENjavascript:gs.nowDateTime()@javascript:gs.daysAgo(-"+days+")^author="+expdt.author;
var k = new GlideRecord("kb_knowledge");
k.addEncodedQuery(str);
k.query();

while(k.next()){

kb = kb + ',' + k.number;
}
//gs.print(expdt.author.name + " " + kb);
gs.eventQueue('reminder.kb.articles.expiration',expdt,expdt.author.email,kb);
kb = '';
}
}
else
{
var grpMem = [];
var groupId = expdt.u_author_group.toString();
if (!gs.nil(expdt.u_author_group) && (groupId != group))
{
group = groupId;

// collects the group members email

var grp = expdt.u_author_group;
var mem = new GlideRecord('sys_user_grmember');
mem.addQuery('group',grp);
mem.query();

while(mem.next()){
grpMem.push(mem.user.email);
}

// collects all the KB articles for author group
var str1 = "workflow_state=published^valid_toBETWEENjavascript:gs.nowDateTime()@javascript:gs.daysAgo(-"+days+")^author.active=false^active=true^u_author_group="+grp;
var k1 = new GlideRecord("kb_knowledge");
k1.addEncodedQuery(str1);
k1.query();

while(k1.next()){

kb1 = kb1 + ',' + k1.number;
}

//gs.print(" group members " + grpMem.length + " " + expdt.number + " " + mem.group.name);
gs.eventQueue('reminder.kb.articles.expiration',expdt,grpMem,kb1);
kb1 = '';
}
}

}

 

Email Notification :

find_real_file.png

Gaurav Ratnawat
Tera Contributor

1. Create one array/object and push all parameters in that variable.

2. Send that parameter as eventparam1 in the gs.eventQueue statement.

3. Pop out the parameters from eventparam1 wherever required in the notification script.