- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-07-2018 08:25 AM
Is there a way to mass update templates on sys_template, through script? Need to do 2 things
1. Update a field on the template, template_used, which points to the template name on the template form
2. Update another field, template_applied_by, which contains - javascript:gs.getUserID()
The above two fields are both reference fields.
Purpose being when a template is applied to an incident, we can see who applied and which template
Have already reviewed the below URL but cant seem to get the syntax right
https://community.servicenow.com/community?id=community_question&sys_id=60e14ba9db98dbc01dcaf3231f961977
Solved! Go to Solution.
- Labels:
-
Scripting and Coding

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-07-2018 01:12 PM
Okay, this script should work. Just make sure that you adjust your 'addQuery' lines to only return the templates you actually want to update. I modified this one so that it ignores individual templates and only updates Global and Group templates. Once you're returning the right amount of templates you can un-comment the 'update()' line at the end to execute the update.
var encodedString = '^u_template_applied_by=javascript:gs.getUserID()^u_template_used=';
var grTem = new GlideRecord('sys_template');
//grTem.addQuery('sys_id', '692c6a13dbd4ef0048f171efbf961983'); // Add more query lines to restrict just to templates that need updating
grTem.addQuery('global', true).addOrCondition('group', '!=', '');
grTem.query();
gs.print(grTem.getRowCount()); // Print out the number of records being updated
while (grTem._next()) {
gs.print(grTem.template);
grTem.template = grTem.template.replace('^EQ', '') + encodedString + grTem.name.toString() + '^EQ';
grTem.setWorkflow(false); // Don't run business rules, etc.
grTem.autoSysFields(false); // Don't update system fields
//grTem.update(); // Un-comment this line once you're sure the row count is just the records you want to update.
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-07-2018 10:06 AM
So are you trying to replace a value already in the template, or add new values to the template? You'll want to use the script I gave you as your starting point, but replacing values vs. adding values will change what we do in the script.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-07-2018 10:15 AM
Add new values. I just tried the above as someone else had posted a similar example on the communities under the url I originally added
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-07-2018 10:15 AM
Do you have an idea of what might work in the script

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-07-2018 10:23 AM
I have some idea, but it's impossible to know without seeing your templates. That's why I suggested you set up one template exactly as you want, and then run a script to give you that template value. You could run this from 'Scripts -> Background' to print out the value from a working template. Just add your working template sys_id to the script and then copy the value it prints out to paste back here.
// Query for working template by sys_id
var t = new GlideRecord('sys_template');
t.addQuery('sys_id', 'YOUR_TEMPLATE_SYS_ID_HERE');
t.query();
if (t.next()) {
gs.print(t.template);
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-07-2018 11:13 AM