selected Check Box variables to display in email notification

harishdasari
Tera Guru

Hi,

We have catalog form and it has checkbox variables in it.

user while filling the form, he will select the required checkboxes, some of the checkboxes will remain un-checked.

Here requirement is to display the only checkbox variables which are checked or selected on the email notification template.

If user will not select any checkbox variable on the form, then it should not be displayed on the email notification template.

please help me how can I achieve this.

Thank you.

1 ACCEPTED SOLUTION

Hi Ankur,



This is the code I have have been using in email script, But none of the check box variables are displaying in email notification.. even though they are true. please correct me if anything wrong this code.


Thank you.



template.print('<p>Roles that Should be Assigned to the Requested User:<br />');  


  var item = new GlideRecord("sc_req_item");


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


  item.query();


  while(item.next()) {


          var keys = [];


          var set = new GlideappVariablePoolQuestionSet();


          set.setRequestID(item.sys_id);


          set.load();


          var vs = set.getFlatQuestions();


          for (var i=0; i < vs.size(); i++) {


              if(vs.get(i).getLabel() != '' && vs.get(i).getDisplayValue()!='' && vs.get(i).getDisplayValue().toString() != 'false') {


if(vs.get(i).getLabel() != "Requested for:" && vs.get(i).getLabel() != "Opened by:" && vs.get(i).getLabel() != "Approval for")


  htmlContent += '<tr><td class="nameValue" width="30%">' + vs.get(i).getLabel() + ':<br><br></td><td width="60%" class="body_content" valign="top">' + vs.get(i).getDisplayValue() +'<br><br></td></tr>';


      }  


                    template.space(4);


                    template.print('         ' +   vs.get(i).getLabel() + " = " + vs.get(i).getDisplayValue() + "<br />");  


              }


          }


View solution in original post

15 REPLIES 15

Hi Ankur,



I have run the script in background script as well, but no output is


displaying. It is simply running the script.



Thanks.



On Tuesday, November 28, 2017, bawiskar <community-no-reply@servicenow.com>


Hi Harish,



Did you check whether atleast variables you are getting in the for loop?




Regards


Ankur


Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

No Ankur, I am not even getting the variable names.. It is simply displaying blank.


Below image is displaying without check box variables...



find_real_file.png


Hi Harish,



Please find my sample code below:


what it does is print the variables where value is not empty.



var item = new GlideappCatalogItem.get('<maintainSysId>'); //maintain item sysId


var variables = item.getVariables();


var variableArray = [];


while(variables.next())


{      


        variableArray.push(variables.name.toString());


}



var gr = new GlideRecord('sc_req_item');


gr.addQuery('sys_id', '<ritmSysId>'); // this is your ritm sysId


gr.query();


if(gr.next()){


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


if(gr.variables[variableArray[i]].toString() != ''){ // print the variables where value is not empty


gs.print(gr.variables[variableArray[i]].toString());


}


}


}



This worked fine for me in background script. change the code as per your requirement now.



Mark Correct if this solves your issue and also hit Like and Helpful if you find my response worthy based on the impact.


Thanks


Ankur


Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

Hi Harish,



Any update on this?


Can you mark my answer as correct, helpful and hit like if you were able to achieve the requirement. This helps in removing this question from unanswered list and helps users to learn from your thread. Thanks in advance.



Regards


Ankur


Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader