Pulling Approvers from Affected CIs

olivershields
Kilo Explorer

Hi,

I am trying to automate the change process to pull a list of approvers from all the affected CIs when the change state is set to 'Approval requested'.

I can get it working when i pull from a single Reference field on a CI but many items have multiple approvers required on them and when i try to pull it from a List field it does nothing at all.

Im using the below script which has been adapted from one i found here.

var answer = [];


var affCIs = new GlideRecord('task_ci');
affCIs.addQuery('task', current.sys_id);
affCIs.query();
while(affCIs.next()){
    answer.push(affCIs.ci_item.u_approver__person_); !
}

u_approver__person is the name of the list field im trying to pull from. If you can suggest a field that can serve this function better or correct the script to pull from the List correctly that would be great.

Thanks

1 ACCEPTED SOLUTION

Here's an example .. Make sure that the affected CI list is loaded before this activity is being called ...



answer = [];



try


{


      var approvers = '';


      var ci = new GlideRecord('task_ci');


      ci.addQuery('task',current.sys_id);


      ci.query();


      while (ci.next()) {


              if(approvers.length == 0)


                      {


                      approvers = approvers + ci.ci_item.u_approver__person_.toString();


              }


              else


                      {


                      approvers = approvers + ',' + ci.ci_item.u_approver__person_.toString();


              }


      }


     


      var approversArray = (approvers.toString() + ',').split(',');


     


      for(i=0;i<approversArray.length;i++)


              {


              if(JSUtil.notNil(approversArray[i]))


                      {


                      answer.push(approversArray[i]);


              }


      }


}



catch(err)


{


      gs.log('Error While Processing-'+err + '-' +approvers);


}


View solution in original post

19 REPLIES 19

Sorry .. There was a typo...



var answer = [];


try


{


      var approvers = (current.watch_list.toString() + ',').split(',');


      gs.log('Current Value-'+current.watch_list.toString());


      gs.log('Approvers-'+approvers);


      for(i=0;i<approvers.length;i++)


      {


              if(JSUtil.notNil(approvers[i]))


              {


                      answer.push(approvers[i]);


                      gs.log('Pushing the approvers-'+approvers[i]);


              }


      }


}



catch(err)


{


      gs.log('Error While Processing-'+err);


}



Change the field from watch_list to your custom field


The syntax error is gone but its still not working im afraid.



I noticed in one of the earlier attempts that you too the _ off the end of u_approver__person. Was this for a reason or just a typo?


The code works well .. Just tested on demo .. Have you replaced 'watch_list' with your field name ? What is your field name ?


Here is a screenshot of what im entering into the User Approval task on the workflow:



SN3.png


You can remove line 1. That is not required ... Also what is the output from the logs ?