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.

gr.update() not updating all records

Anubhuti
Tera Expert

Hi All,

I am trying to update the work notes of multiple task records, but only one record is getting updated.

Below is the script I am using:

var gr = new GlideRecord('tablename');
gr.addQuery('parent',current.sys_id);
gr.addEncodedQuery('stateNOT IN3,7');
gr.query();
while(gr.next()) {
gr.work_notes = "comments";
gr.update();
}
}

When running it as background script, I am getting the below mentioned error and when I am removing gr.update() i am not getting any error:

Cannot find function getLocation in object com.glide.script.fencing.ScopedUser@@@@@@
Has anybody experienced similar issue?

1 ACCEPTED SOLUTION

Anubhuti
Tera Expert

Hi All,

 

Thanks for your response.

As only one record was getting updated, at first I stored all the sysid in one array and then updated the work notes in another for loop and its working fine.

var arr =[];
var gr = new GlideRecord('tablename');
gr.addQuery('parent',current.sys_id);
gr.addEncodedQuery('stateNOT IN3,7');
gr.query();
while(gr.next()) {
arr.push(gr.sys_id.toString());
}

for(var i =0; i<arr.length; i++){
var gr = new GlideRecord('tablename');
gr.addQuery('sys_id',arr[i].toString());
gr.query();
if(gr.next()) {
gr.work_notes = "comments";
gr.update();
}
}

View solution in original post

13 REPLIES 13

Ashutosh Munot1
Kilo Patron
Kilo Patron

HI,

Use below code:

var gr = new GlideRecord('tablename');
gr.addQuery('parent',current.sys_id);
gr.addEncodedQuery('stateNOT IN3,7');
gr.query();
while(gr.next()) {
gr.work_notes = "comments";

gr.setWorkflow(false);
gr.update();
}
}


From wherever you run script the BR will trigger on that tables. So use setWorkflow(false);


Thanks,
Ashutosh

Anubhuti
Tera Expert

Hi All,

 

Thanks for your response.

As only one record was getting updated, at first I stored all the sysid in one array and then updated the work notes in another for loop and its working fine.

var arr =[];
var gr = new GlideRecord('tablename');
gr.addQuery('parent',current.sys_id);
gr.addEncodedQuery('stateNOT IN3,7');
gr.query();
while(gr.next()) {
arr.push(gr.sys_id.toString());
}

for(var i =0; i<arr.length; i++){
var gr = new GlideRecord('tablename');
gr.addQuery('sys_id',arr[i].toString());
gr.query();
if(gr.next()) {
gr.work_notes = "comments";
gr.update();
}
}

Just a sidenode

That is far from recommended duo to performance impact.

Why dont you try to figure out whats wrong ?
What happens if you update another field on multiple records at a time ? Does that work ?
You can easily test it from the list first. - if it works try through the script you created

 

Yes, I agree this is not recommended and may impact performance as well but I tried everything possible.

As soon as I add gr.update() error occurs.

One of the reason could be that I am working in a scoped application.

That is why I asked if anyone is aware of the error I got.

I will try to find out the cause for the error ,this is just a temporary fix.

If anyone get to know about the same please update all of us.