
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-06-2014 02:53 PM
I have a request to make it so that the approvers comments they put in the comments section. How to I go about placing the approver comments into the task?
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-24-2016 04:15 AM
This is what our Approval Events (Task) business rule look like. It was modified by the company that helped us setup ServiceNow. How ever even if you want to use a group for approve you still have to use the approval user task in the workflow as that one works for both individuals and groups. That is the only time that approval comments show up.
function checkRequest() {
var task = current.sysapproval.sys_class_name;
return (task == 'sc_request');
}function checkSCTask() {
var task = current.sysapproval.sys_class_name;
return (task == 'sc_task');
}var isRequest = checkRequest();
var isSCTask = checkSCTask();if (current.state.changes() && current.state=='cancelled') {
var event = "approval.cancelled";
if (isRequest)
event = "request.approval.cancelled";
else if (isSCTask)
event = "sc_task.approval.cancelled";
gs.eventQueue(event, current, gs.getUserID(), gs.getUserName());
}if (current.state.changes() && current.state=='requested') {
var event = "approval.inserted";
if (isRequest)
event = "request.approval.inserted";
else if (isSCTask)
event = "sc_task.approval.inserted";
gs.eventQueue(event, current, gs.getUserID(), gs.getUserName());
updateTask(current, current.approver.getDisplayValue() + " requested to approve task");
}if (current.state.changes() && current.state=='rejected') {
var event = "approval.rejected";
if (isRequest)
event = "request.approval.rejected";
else if (isSCTask)
event = "sc_task.approval.rejected";
gs.eventQueue(event, current, current.state, previous.state);
updateTask(current, gs.getUserDisplayName()+ " rejected the task.", current.comments.getJournalEntry(1));
notifyMyFriends(current);
}if (current.state.changes() && current.state=='approved') {
updateTask(current, gs.getUserDisplayName() + " approved the task.", current.comments.getJournalEntry(1));
}function notifyMyFriends(me) {
var friends = new GlideRecord('sysapproval_approver');
friends.addQuery('sysapproval', me.sysapproval);
friends.query();
while(friends.next()) {
if (friends.approver.toString() != me.approver.toString()) {
gs.eventQueue("approval.rejected.by.other", me, friends.approver);
}
}
}function updateTask(me, journal, comments) {
// if this is for a group approval, don't log this user action since the Group Approval Activity will handle the logging
// if (!current.group.nil())
// return;
// only log the user approval activity for workflows when specifically turned on
// otherwise, we spam the approval history log when it is almost never desired to track via the approval history journal field
var isWorkflow = !current.wf_activity.nil();
if (isWorkflow && (gs.getProperty("glide.workflow.user_approval_history") != "true"))
return;
if (comments)
journal += " Comments: " + comments;
var task = new GlideRecord('task');
if (task.get(me.sysapproval)) {
if (isWorkflow)
task.setWorkflow(false);
task.approval_history.setJournalEntry(journal);
task.update();
}
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-23-2016 12:38 PM
Brian;
Do you have a final form of your script you could post here?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-23-2016 12:46 PM
This is the script I use to put the Approver Comments in the Task. Just add this in your WF Task. You can also add it to work notes just update that field. Let me know if you have any questions.
//Adds approver comments to Description Area
var apv = new GlideRecord('sysapproval_approver');
apv.addQuery('sysapproval',current.sys_id);
apv.addQuery('comments','!=','') // add this to only find approvals that have comments on them
apv.query();
while (apv.next()) { // change if to while so it will go through all approvals with comments
task.description += "\nApproval Comments: from " + apv.approver.name + "\n" + apv.comments.getJournalEntry(-1); // add approver name here
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-24-2016 11:27 AM
Thanks!

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-24-2016 04:15 AM
This is what our Approval Events (Task) business rule look like. It was modified by the company that helped us setup ServiceNow. How ever even if you want to use a group for approve you still have to use the approval user task in the workflow as that one works for both individuals and groups. That is the only time that approval comments show up.
function checkRequest() {
var task = current.sysapproval.sys_class_name;
return (task == 'sc_request');
}function checkSCTask() {
var task = current.sysapproval.sys_class_name;
return (task == 'sc_task');
}var isRequest = checkRequest();
var isSCTask = checkSCTask();if (current.state.changes() && current.state=='cancelled') {
var event = "approval.cancelled";
if (isRequest)
event = "request.approval.cancelled";
else if (isSCTask)
event = "sc_task.approval.cancelled";
gs.eventQueue(event, current, gs.getUserID(), gs.getUserName());
}if (current.state.changes() && current.state=='requested') {
var event = "approval.inserted";
if (isRequest)
event = "request.approval.inserted";
else if (isSCTask)
event = "sc_task.approval.inserted";
gs.eventQueue(event, current, gs.getUserID(), gs.getUserName());
updateTask(current, current.approver.getDisplayValue() + " requested to approve task");
}if (current.state.changes() && current.state=='rejected') {
var event = "approval.rejected";
if (isRequest)
event = "request.approval.rejected";
else if (isSCTask)
event = "sc_task.approval.rejected";
gs.eventQueue(event, current, current.state, previous.state);
updateTask(current, gs.getUserDisplayName()+ " rejected the task.", current.comments.getJournalEntry(1));
notifyMyFriends(current);
}if (current.state.changes() && current.state=='approved') {
updateTask(current, gs.getUserDisplayName() + " approved the task.", current.comments.getJournalEntry(1));
}function notifyMyFriends(me) {
var friends = new GlideRecord('sysapproval_approver');
friends.addQuery('sysapproval', me.sysapproval);
friends.query();
while(friends.next()) {
if (friends.approver.toString() != me.approver.toString()) {
gs.eventQueue("approval.rejected.by.other", me, friends.approver);
}
}
}function updateTask(me, journal, comments) {
// if this is for a group approval, don't log this user action since the Group Approval Activity will handle the logging
// if (!current.group.nil())
// return;
// only log the user approval activity for workflows when specifically turned on
// otherwise, we spam the approval history log when it is almost never desired to track via the approval history journal field
var isWorkflow = !current.wf_activity.nil();
if (isWorkflow && (gs.getProperty("glide.workflow.user_approval_history") != "true"))
return;
if (comments)
journal += " Comments: " + comments;
var task = new GlideRecord('task');
if (task.get(me.sysapproval)) {
if (isWorkflow)
task.setWorkflow(false);
task.approval_history.setJournalEntry(journal);
task.update();
}
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-24-2016 11:26 AM
Awesome, Thanks!