Help with script to pull Approvers approval from workflow

Community Alums
Not applicable

Hi All,

I am fairly new to the ServiceNow Development world. I am also an novice script-er   So here is my question/Issue:

I've made an order guide that contains 60+/- check boxes that each would flow to a different approver. On the back end i created a   workflow to track role approvals.This is for one of our in house ERP systems. I was able to make the workflow wait for all of the rejections and the approvals but I now have a requirement to note who approved what(which checkbox) in the worknotes of the task.   I was able to pull the approvers and their decision (rejected. no longer required, approved) but I am not sure how to get the actual Checkbox that corresponds to the approver.

I used this workflow(Massive I know!!):

OHM Corp workflow.PNG

This is what is currently created on the worknotes:

ohmtask.PNG

Here is the script I used to pull the approvers decision:

var rowCount ;

      var sc_approval = new GlideRecord('sysapproval_approver');

      sc_approval.addQuery('sysapproval',current.sys_id);

      sc_approval.addActiveQuery();

      sc_approval.query();

  rowCount = sc_approval.getRowCount();

  while (sc_approval.next()){

  var userid = sc_approval.approver;

  sc_user= new GlideRecord('sys_user');

  sc_user.addQuery('sys_id',userid);

  sc_user.query();

  if (sc_user.next()){

  var userName = sc_user.name;

  }

  var theTaskMessage ;

  if (theTaskMessage == null){

  theTaskMessage = sc_approval.state.getDisplayValue()+' '+userName+ ' \n';

  }

  else {

  theTaskMessage = theTaskMessage + sc_approval.state.getDisplayValue()+' '+userName+ ' \n';

  }

  }

task.work_notes = theTaskMessage;

So What   I need to know is how to pull the variable that was approved form the workflow.

Any help or advise would be greatly appreciated!

Thank you!!

1 ACCEPTED SOLUTION

so on the same script change this line to


theTaskMessage = sc_approval.state.getDisplayValue()+' '+userName+ ' \n';



theTaskMessage = sc_approval.state.getDisplayValue()+' '+userName+   ' ' + sc_approval.wf_activity.getDisplayValue() + ' \n';



and that should print the workflow activity name on the same line.


View solution in original post

16 REPLIES 16

Community Alums
Not applicable

Could you give me an example of how to do a scratchpad?


certainly workflow scratchpad is a GREAT toy it makes a variable you can use in the workflow to pass along values...



in the begining make a run script box that initializes all your variables.. this will be a basic script...



workflow.scrachpad.variable_name_1 = 'name of checkbox 1';


workflow.scratchpad.variable_name_2 = 'name of checkbox 2';



etc...



now anywhere in the workflow you can use workflow.scrachpad.variable_name_1 in a script.. so after it is approved drop in a script box


workflow.scratchpad.variable_name_1 += ' Was approved by' + approvers name;



do that after all the approvals/rejections..



in the task  



task.comments += workflow.scratchpad.variable_name_1



personally i would just change the activity names to Approval For <Variable display value>   then you can just use the display value for the wf activity off of the approval record.