Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

List of recipients in notification via workflow

KB15
Giga Guru

I think I have most of the components to have this work but i'm missing something.

I have workflow triggering an event to fire an notification. The event contains a parameter script to get a list of email addresses from a list of users from a list collector. I can generate the array no problem.

Create Event activity:

(function() {

var arrayEmail = [];

var gr = new GlideRecord('sc_req_item');

gr.addQuery('number', current.sys_id);

gr.query();

if (gr.next()) {

var arrayUtil = new ArrayUtil();

var list = gr.variables.proj_employee_remove_list.toString();

var arrayList = list.split('.');

l = arrayList.length;

for (var i=0; i<=l; i++) {

var ue = new GlideRecord('sys_user');

ue.addQuery('sys_id', 'IN', arrayList[i]);

ue.query();

while (ue.next()) {

arrayEmail += (ue.email + ',');

}}

return "arrayEmail";

}

}());

The problem is passing the email addresses to the notification. I have the parameter 1 selected in the notification. The event fires but returns the RITM that's associated with workflow. What else am i missing or doing incorrectly?

1 ACCEPTED SOLUTION

KB15
Giga Guru

Looks like I had an error with the first part of the query. It should have been a 'sys_id', current.sys_id


Second, the parameter needs to pass the sys_id of the users so the second half of the script was wholly unnecessary.


I'm not sure if the toString at the end is necessary since it's already in a string format but it didn't hurt.



Thanks for the suggestions!



(function() {



      var arrayEmail = [];



      var gr = new GlideRecord('sc_req_item');


      gr.addQuery('sys_id', current.sys_id);


      gr.query();



      if (gr.next()) {


              var arrayUtil = new ArrayUtil();


              var list = gr.insertvariablename.toString();


              var arrayList = list.split(',');


              l = arrayList.length;



          return arrayList.toString();


      }


View solution in original post

10 REPLIES 10

gspriya
Kilo Expert

Hi Kkim,

 

I have a similar requirement where I need to send the email notifications to a list of people configured in our custom form when the SLA configured exceeds 50%. This is achieved via workflow Run Script activity. 

I have a field called Team Lead List which is a Glide List field in our custom form Location Based Assignments.

Now I need to send the emails to all the members in the team lead list field when sla exceeds 50%.

My script is as follows:

try
{
var arrayEmail = [];
var incLocation=current.task.location;
var incSupportGrp=current.task.assignment_group;

var usys_id=gs.getProperty('corporate.office.SDM.sysID');
var uname=gs.getProperty('corporate.office.SDM.name');

var gr=new GlideRecord('u_location_based_assignment');
gr.addQuery('u_location',incLocation);
gr.addQuery('u_support_group',incSupportGrp);
gr.query();
if(gr.next())
{
var arrayUtil = new ArrayUtil();
var leads = gr.u_team_lead_list.toString();
var arrayList =leads.split(",");
temp = arrayList.length;
//gs.print("Array Value: " + temp);
//gs.print("Array.length:" + temp.length);

for(i=0;i<temp;i++)
{

var usr = new GlideRecord('sys_user');
usr.addQuery('sys_id', 'IN', arrayList[i]);
usr.query();
while(usr.next()){
arrayEmail.push(usr.getValue[i]('email'));
}

}

gs.eventQueue('inc.50.SDM.event',current,arrayList.toString());

}
}
catch(e)
{
gs.log('in side catch:'+e,'w123');
}

 

But when I execute it I am not getting the sysid's of the user instead it setting some value like 'Created on <time>'

Please tell me how to fix this

 

Regards,

Priya