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.

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

I am using this below as suggested by you with slight modification. I have caller_id   and watch_list in the reciepient fields.


Not working for me


<mail_script>


var userArr=[];


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'));


}


template.print(userArr);


}


</mail_script


Is it returning the values of those fields?


<mail_script>


var userArr=[];


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'));


}


template.print(userArr);


}


</mail_script>



Field array returns caller_id, watch list. But when I try getting value current.getValue('inc_field') returns null


it should be "userArr.push(current.getValue(inc_field));" . Do not use quotes for inc_field, you have defined it as a variable.


Yup, very nice catch. One last question I have is userArr.push(${event.parm2});


${event.parm2} cannot be used in mail script tag I guess.