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

domaners
Kilo Guru

Hi Matthew, you can achieve this by adding a mail script to your notification and querying that catalog variable table:



<mail_script>


printVars();



function printVars() {


    template.print('<b>Request Details</b>\n');


      var cv = new GlideRecord('sc_item_option_mtom');


      cv.addQuery('request_item', current.sysapproval);


      cv.addQuery('sc_item_option.item_option_new.type', 'IN', '1, 10, 16, 18, 2, 21, 22, 3, 4, 5, 6, 7, 8, 9'); // '2, 6');


      cv.addNotNullQuery('sc_item_option.value');


      cv.orderBy('sc_item_option.order');


      cv.addQuery('sc_item_option.value', '!=', '0');


      cv.query();


      while(cv.next()) {


          template.print('\n' + cv.sc_item_option.item_option_new.question_text + ':\t<b>' + cv.sc_item_option.value + '</b>');


      }


}


</mail_script>


This script is pretty generic, so it will work with most catalog item types. You can customize the addQuery sections to show only specific variables if required.


Hey Adam,



Doing a gliderecord query seems like extra work. Looking at Mandar's response, it seems like there would be a 'shorter/quicker' way to do this.



Not ruing the GlideRecord out, but seems like ServiceNow would have an easier way to get variable info



Not a sermon, just a thought


Yeah, you're probably right in this instance, however you'd have to hard code multiple notifications for all of your Catalog Items if you have a lot of them. I guess I set this up originally as more of a generic routine for all of my Catalog Items to use, but if you want a specific set up for one type of item, then Mandar's suggestion would be the simpler way to go.


if its a reference variable its fetching the SYSID, is there any way you can get the Display value of the variable.



I have tried the Display Value, it doesn't work