- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-19-2018 11:35 AM
I have been struggling with this script for too long. My task and the checklist are cloned just fine, but the query for the checklist items never returns anything. I have added logging and the correct sys_ids are being passed. When I view the checklist_item table in a listview, the checklist field is empty for all records, however, if I view the checklist, the correct related items are shown.
var ot = new GlideRecord('u_ot');
var recordToClone = '84e213c80f2672003436807be1050e48';
if (ot.get(recordToClone)) {
ot.number = '';
if (ot.insert()) {
CloneCheckList(recordToClone, ot.sys_id);
}
}
function CloneCheckList(originalTask, newTask) {
var chkLst = new GlideRecord('checklist');
chkLst.addQuery('document',originalTask);
chkLst.query();
if (chkLst.next()) {
chkLst.number = '';
chkLst.document = newTask; // newly inserted task
if (chkLst.insert()) {
CloneCheckListItems(recordToClone, chkLst.sys_id);
}
}
}
function CloneCheckListItems(originalChecklist, newCheckList) {
var chkLstItem = new GlideRecord('checklist_item');
chkLstItem.addQuery('checklist',originalChecklist);
chkLstItem.query(); // never returns anything
while (chkLstItem.next()) {
chkLstItem.checklist = newCheckList;
chkLstItem.complete = false;
chkLstItem.insert();
}
}
What I would rather do, is clone the Task and then create a checklist from a template, but I haven't been able to figure that out either.
Solved! Go to Solution.
- Labels:
-
Scripting and Coding

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-19-2018 12:51 PM
We created a Template and applied the Template to the Create Task workflow activity. So when the task is created, the template is populated. Then using a before business rule, we're using the following script:
(function executeRule(current, previous /*null when async*/) {
var checklist = '';
//checklist = '38a48bc4dba59f002bd8f33eae9619ce';
var temp = current.template;
var cklist = temp.checklist_template;
//gs.log('what is cklist = '+cklist);
var getTemplate = new GlideRecord('checklist_template');
getTemplate.addQuery('sys_id', cklist);
getTemplate.query();
if(getTemplate.next()) {
var itemJSON = new JSON().decode(getTemplate.template);
var name = itemJSON['name'];
var items = itemJSON['items'];
var owner = itemJSON['owner'];
}
//var table = current.getTableName();
var checklistId = '';
var list = new GlideRecord('checklist');
list.name = name;
list.document = current.sys_id;
list.table = 'sn_sm_finance_task';
list.insert();
// create checklist items
for (var i = 0; i < items.length; i++) {
var item = new GlideRecord('checklist_item');
item.checklist = list.sys_id;
item.complete = false;
item.name = items[i]['name'];
item.order = items[i]['order'];
item.insert();
}
})(current, previous);
Maybe this will help switching you to templates.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-21-2018 03:29 PM
I tried using your code as an example. It sets and writes the values to the right tables but It doesn't display the check list items in my sc task view.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-21-2018 03:50 PM
Are you using a template? or where are you trying to use this code?