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.

Adding cat item variables to email notification

matthew_magee1
Giga Guru

Hi all,

I think I'm trying to do something pretty simple.

 

I have a few variables on my catalog item form that I need to pull into an email notification. One of the fields being 'alt_poc_phone'

 

I've tried GlideRecord and current.variable_pool.alt_poc_phone and neither seems to work.

 

I've also referenced the following wiki page (Scripting for Email Notifications - ServiceNow Wiki), but something's not clicking (on my part).

 

Any help is greatly appreciated (with examples)

 

MM

1 ACCEPTED SOLUTION

Mandar/Adam-



Follow up to my post. For some reason the mail script is working now. I'm not sure why it wasnt' working earlier. I guess I had a typo or something.



Here's the script that works:



<mail_script>


var item = new GlideRecord("sc_req_item");


item.addQuery("request", current.sys_id);


item.query();


while(item.next()) {


var catalogItem = item.number + ': ' + item.cat_item.getDisplayValue();


var misc = item.variable_pool.alt_poc;


template.print(catalogItem + "<br/> Field: " + misc);


}


</mail_script>



Really appreciate the feedback guys, couldn't have done this without you-



On to my next challenge


View solution in original post

41 REPLIES 41

Hey Kumar,



Let's see if this will help. I'll walk through an email notification that fires when a new sc_request is created, but in this email, I want to list certain variables captured in the sc_req_item entry associated w/ the sc_request as well as a link back to the requested item.



The email notification itself fires on inserts to the sc_request table


The email notification 'What it will contain' will/could use an email template that you'll create


The email template will/could contain references to an email script.


The script will/could contain something like this:



var gr = new GlideRecord("sc_req_item");


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


gr.query();


while(gr.next()) {


var catalogItemLink = '<a href=" ' + <your url> + 'catalog/catalog.do?sysparm_document_key=sc_req_item, ' + gr.getUniqueValue() + ' ">' + gr.number + '</a>' + ': ' + gr.cat_item_getDisplayValue();


template.print(     " + catalogItemLink + "<br/>");


template.print(     <b>Requested For</b>: " + gr.variable_pool.<name of variable>.getDisplayValue() + "<br/>"; //this is a reference field so I have to use getDisplayValue


template.print(     <b>Alternate POC</b>: " + gr.variable_pool.<name of variable>.alt_poc_name + "<br/>"; //this is a regular single line text field so i can call the name of the field directly w/out getDisplayValue


template.print(     <b>Urgency</b>: " + gr.variables.header); //you can also try this call instead of variable_pool to see if you get what you need


}



Hope this helps; keep us posted-



matthew


Hi Matthew



I used something like this and it worked



<mail_script>


//template.print("Summary of Requested item:\n");


var gr = new GlideRecord("sc_req_item");


gr.addQuery("sys_id", current.sysapproval);


gr.query();


while(gr.next()) {


//template.print(gr.number + ": " + gr.quantity + " X " + gr.cat_item.getDisplayValue() + "\n");


//template.print(" Options:\n");


for (key in gr.variables) {


var v = gr.variables[key];


if(v.getGlideObject().getQuestion().getLabel() != '' && v.getDisplayValue() != '') {


//template.space(4);


if(v.getGlideObject().getQuestion().getName()=="user_first_name")


template.print(' ' + v.getGlideObject().getQuestion().getLabel() + " = " + v.getDisplayValue() + "\n");


if(v.getGlideObject().getQuestion().getName()=="user_last_name")


template.print(' ' + v.getGlideObject().getQuestion().getLabel() + " = " + v.getDisplayValue() + "\n");


if(v.getGlideObject().getQuestion().getName()=="email")


template.print(' ' + v.getGlideObject().getQuestion().getLabel() + " = " + v.getDisplayValue() + "\n");


if(v.getGlideObject().getQuestion().getLabel()=="PIN")


template.print(' ' + v.getGlideObject().getQuestion().getLabel() + " = " + v.getDisplayValue() + "\n");


}


}


}


</mail_script>




Thanks


Matthew



I have 1 more question if you can help of



In the approval reply email, I will have a field like below


NextApprover:


There, present approver will provide next approver email id and sends approval email to SN


I have to write a script to read the NextApprover: field value and populate it in ReadOnly field of submitted form.. this field will be left blank while submitting form.. I want to fill that field in this way as I mentioned



Is that something doable?? can we populate fields on form after submission??



Thanks


Hi anthony,



I hope you have an answer to this as I'm obviously really late to your response. The script will go in a Notification Email Script.


See: Scripting for Email Notifications - ServiceNow Wiki


Thank you Mathew your script helped me a lot.