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.

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

Kalaiarasan Pus
Giga Sage

Try this



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


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


{


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


{


    answer.push(approvers[i]));


}


}


Ive tried putting this into the Approval - User bit of the workflow and it hasnt seemed to work.


try


{


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


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


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


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


{


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


{


answer.push(approvers[i]);


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


}


}


}


catch(err)


{


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


}


This is getting skipped due to Syntax errors:



WARNING at line 3: Expected a string and instead saw var.

ERROR at line 3: Expected ':' and instead saw 'approvers'.