The Now Platform® Washington DC release is live. Watch now!
09-22-2015 11:20 AM
I'm trying to change our Assignment Based workload script to query a list collector field instead of our select box field. Tried several times (script below) but it's not working...:(
var assignTo = getLowestUser();
//gs.addInfoMessage("assigning to is " + assignTo);
current.assigned_to = assignTo;
function getLowestUser() {
var userList = new Array();
var cg = new GlideRecord('sys_user_grmember');
cg.addQuery('group', current.assignment_group);
if (current.assignment_group.getDisplayValue() == 'SD - Collaboration/Mobile') {
//cg.addQuery('user.u_service_desk_workload', 'SD-Collaboration/Mobile'); HERE'S THE PREVIOUS DROP DOWN SELECT FIELD
NOW TRYING TO QUERY A LIST FIELD. IF THE LIST COLLECTOR CONTAINS THIS ASSIGNMENT GROUP.
//cg.addQuery('user.u_service_dsk_workload', 'LIKE', '591f507cf07d4d0c0f323fc297cb7d10');
//cg.addOrCondition('user.u_service_dsk_workload', 'CONTAINS', '591f507cf07d4d0c0f323fc297cb7d10');
//cg.addQuery(user.u_service_dsk_workload.toString().indexOf("591f507cf07d4d0c0f323fc297cb7d10") >-1);
cg.query();
while(cg.next()) {
var tech = cg.user.toString();
TRIED TO QUERY HERE.
//if (cg.user.u_service_dsk_workload.toString().indexOf("591f507cf07d4d0c0f323fc297cb7d10") >-1){
//if (cg.user.u_service_dsk_workload, 'LIKE', '591f507cf07d4d0c0f323fc297cb7d10'){
var cnt = countTickets(tech);
//gs.addInfoMessage("Tech counts " + cg.user.name + ' ' + cnt + " " + tech);
userList.push( { sys_id: tech, name: cg.user.name, count: cnt } );
}
for(var i=0; i < userList.length; i++) {
//gs.addInfoMessage(userList.sys_id + " " + userList.name + " " + userList.count);
}
userList.sort(function(a, b) {
//gs.addInfoMessage("Sorting: " + a.sys_id + "(" + a.count + "); " + b.sys_id + "(" + a.count + ")");
return a.count - b.count; });
if (userList.length <= 0)
return "";
return userList[0].sys_id;
}
function countTickets(tech){
var ct = new GlideRecord('incident');
ct.addQuery('assigned_to',tech);
ct.addQuery('active',true);
ct.query();
return ct.getRowCount();
}
}
Solved! Go to Solution.
09-24-2015 07:19 AM
Hello Andrea,
I think the problem (if I'm understanding the desired outcome correctly) might lie in both these lines:
cg.addQuery('user.u_service_dsk_workload', 'CONTAINS', '591f507cf07d4d0c0f323fc297cb7d10');
cg.addQuery(user.u_service_dsk_workload.toString().indexOf("591f507cf07d4d0c0f323fc297cb7d10") > -1);
Am I understanding correctly that you only want members that are just in this group? If so, I think the first query might just want to do a straight equals comparison by removing the 'CONTAINS' parameter, so just cg.addQuery('user.u_service_dsk_workload', '591f507cf07d4d0c0f323fc297cb7d10');
It looks like the 2nd query is doing the same thing as the first from what I can see, so it could probably just be removed. Also, if I'm incorrect in my understanding and you do want to you use the 'CONTAINS' parameter, I might still remove the 2nd line as it seems a bit redundant. I also think for the 2nd line if you do want to use it, you would want to split that comparison out into 3 comparison parameters. For instance: cg.addQuery(user.u_service_dsk_workload.toString().indexOf("591f507cf07d4d0c0f323fc297cb7d10"), '>', -1);
Let me know if trying either of these changes produces the desired results.
09-22-2015 12:46 PM
Try this:
cg.addQuery('user.sys_user.u_service_dsk_workload', 'IN', '591f507cf07d4d0c0f323fc297cb7d10');
09-22-2015 01:01 PM
Thank you for the quick reply, that didn't seem to work either. Here's a pic of my old field and new field.
var assignTo = getLowestUser();
//gs.addInfoMessage("assigning to is " + assignTo);
current.assigned_to = assignTo;
function getLowestUser() {
var userList = new Array();
var cg = new GlideRecord('sys_user_grmember');
cg.addQuery('group', current.assignment_group);
if (current.assignment_group.getDisplayValue() == 'SD - Collaboration/Mobile') {
//OLD FIELD
//cg.addQuery('user.u_service_desk_workload', 'SD-Collaboration/Mobile');
//NEW FIELD
cg.addQuery('user.u_service_dsk_workload', 'IN', '591f507cf07d4d0c0f323fc297cb7d10');
//cg.addQuery('user.sys_user.u_service_dsk_workload', 'IN', '591f507cf07d4d0c0f323fc297cb7d10');
//cg.addQuery('user.u_service_dsk_workload', 'LIKE', '591f507cf07d4d0c0f323fc297cb7d10');
//cg.addOrCondition('user.u_service_dsk_workload', 'CONTAINS', '591f507cf07d4d0c0f323fc297cb7d10');
//cg.addQuery(user.u_service_dsk_workload.toString().indexOf("591f507cf07d4d0c0f323fc297cb7d10") >-1);
cg.query();
while(cg.next()) {
var tech = cg.user.toString();
//if (cg.user.u_absent != true){
//if (cg.user.u_service_dsk_workload.toString().indexOf("591f507cf07d4d0c0f323fc297cb7d10") >-1){
//if (cg.user.u_service_dsk_workload, 'LIKE', '591f507cf07d4d0c0f323fc297cb7d10'){
var cnt = countTickets(tech);
//gs.addInfoMessage("Tech counts " + cg.user.name + ' ' + cnt + " " + tech);
userList.push( { sys_id: tech, name: cg.user.name, count: cnt } );
}
for(var i=0; i < userList.length; i++) {
//gs.addInfoMessage(userList.sys_id + " " + userList.name + " " + userList.count);
}
userList.sort(function(a, b) {
//gs.addInfoMessage("Sorting: " + a.sys_id + "(" + a.count + "); " + b.sys_id + "(" + a.count + ")");
return a.count - b.count; });
if (userList.length <= 0)
return "";
return userList[0].sys_id;
}
function countTickets(tech){
var ct = new GlideRecord('incident');
ct.addQuery('assigned_to',tech);
ct.addQuery('active',true);
ct.query();
return ct.getRowCount();
}
}
09-22-2015 02:17 PM
Ok, what about this:
var queryString = "user.u_service_dsk_workloadLIKE591f507cf07d4d0c0f323fc297cb7d10";
var cg = new GlideRecord('sys_user_grmember');
cg.addQuery('group', current.assignment_group);
cg.addEncodedQuery(queryString);
09-23-2015 08:42 AM
Not sure what the problem is, this one didn't work either..:(