Catalog item Available For script.

ryliem_
Kilo Explorer

I'm trying to make a form show up in the service portal for only certain users. I have used an Available For group, which has worked perfectly for one half of my requirements. The other half is to show up only for supervisors. In my case, all supervisors will have u_user_has_direct_reports == true, and this is how I want to tell if an individual is a supervisor.

function answer(){

var gr = new GlideRecord('sys_user');

gr.addQuery('u_user_has_direct_reports','true');

gr.query();

var users = [];

while (gr.next){

users.push(gr.getValue('sys_id'));

}

return users;

}

This is what I have so far, but am having troubles make it work correctly.

1 ACCEPTED SOLUTION

dhasselquist
Mega Guru

The Advanced portion of "Available for" returns true or false, not a query string or collection of sys_id's.



I did a brief test, and you'll want to do something more along the lines of:



getAnswer();



function getAnswer(){


        var gr = new GlideRecord('sys_user');


        gr.get('sys_id',gs.getUserID());


        if (gr.u_user_has_direct_reports == true)


                  return true;


        else


                  return false;


}


View solution in original post

11 REPLIES 11

Naresh27
Tera Guru

Can you edit your code and try this. you missed this brackets '()'



function answer(){


var gr = new GlideRecord('sys_user');


gr.addQuery('u_user_has_direct_reports','true');


gr.query();


var users = [];



while (gr.next()){


users.push(gr.getValue('sys_id'));


}



return users;



}


Added the brackets, and still not getting the required results.


Can we try with,



function answer(){


var gr = new GlideRecord('sys_user');


gr.addQuery('u_user_has_direct_reports', true);


gr.query();


var users = [];


while (gr.next()){


users.push(gr.sys_id.toString());


}


return 'sys_idIN' + users;


}


Tried t his, and not displaying in service portal for supervisors