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'.