Recipient list in notification script in email

ryadavalli
Tera Expert

Can I get the list of recipients in a email notification script which I am using the email, before it is sent out. I know we can get if it is a field in the form, but from the

whom to fields?

1 ACCEPTED SOLUTION

Ravali,



  Here is your complete email script. I have tested this and it should work for you as well.


var userArr=[];


var count=0;


var fieldsArr1=email_action.recipient_users.toString().split(',');


var fieldsArr2=email_action.recipient_groups.toString().split(',');


var fieldsArr3 = email_action.recipient_fields.toString().split(',');


if(fieldsArr1)


  {


  for(var i=0; i<fieldsArr1.length; i++){


  userArr.push(fieldsArr1[i]);


  }


}


if(fieldsArr2)


  {


  for(var i=0; i<fieldsArr2.length; i++){


  var gr= new GlideRecord('sys_user_grmember');


  gr.addQuery('group',fieldsArr2[i]);


  gr.query();


  while(gr.next()){


  userArr.push(gr.getValue('user'));


  }


  }


}


if(fieldsArr3)


  {


  for(var i=0; i<fieldsArr3.length; i++){


  var inc_field = fieldsArr3[i].toString();


  userArr.push(current.getValue(inc_field));


  }


}


if(email_action.event_parm_1!='')


  {


  userArr.push(event.parm1);


}


if(email_action.event_parm_2!='')


  {


  userArr.push(event.parm2);


}


var arrayUtil = new ArrayUtil();


var gr1= new GlideRecord("sys_user_has_role");


gr1.addQuery('user','IN',arrayUtil.unique(userArr).toString());


gr1.addQuery('role.name','itil');


gr1.query();


if(gr1.getRowCount()==arrayUtil.unique(userArr).length){


  template.print("Click here to View: "+'${URI_REF}');


}


View solution in original post

46 REPLIES 46

var userArr=[];
var count=0;
var fieldsArr = email_action.recipient_fields.toString().split(',');


gs.log("Field Array ==" +fieldsArr);
if(fieldsArr)
{
for(var i=0; i<fieldsArr.length; i++){
var inc_field = fieldsArr[i].toString();
userArr.push(current.getValue(inc_field));
}
}
gs.log("Final List =="+userArr);
var gr= new GlideRecord("sys_user_has_role");
gr.addQuery('user','IN',userArr.toString());
gr.addQuery('role.name','itil');
gr.query();
while(gr.next()){
template.print("Click here to view: "+${URI_REF});
}


oops this is the one :


var userArr=[];
var count=0;
var fieldsArr = email_action.recipient_fields.toString().split(',');


gs.log("Field Array ==" +fieldsArr);
if(fieldsArr)
{
for(var i=0; i<fieldsArr.length; i++){
var inc_field = fieldsArr[i].toString();
userArr.push(current.getValue(inc_field));
}
}
if(event.parm1)
{
userArr.push(event.parm1);
}
if(event.parm2)
{
userArr.push(event.parm2);
}
gs.log("Final List =="+userArr);
var gr= new GlideRecord("sys_user_has_role");
gr.addQuery('user','IN',userArr.toString());
gr.addQuery('role.name','itil');
gr.query();
while(gr.next()){
template.print("Click here to view: "+${URI_REF});
}


When I get time today, I will try this on my instance and update you. Other than the link, is everything working as expected?


Thanks Abhinay. The last line gave me an error when I put it in the email script.


Hey Abhinay,


Please let me know if you got same error when used the template.print(), did you get chance to check this? Thanks for your time.