Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

How to make field visible by using client script in Private Task form?

Gunashekar
Tera Contributor

I have created 3 new fields in Private Task form (tam category, tam sub category and effort in hours) and want them to be visible only to users in a group I have created (TAM Cat and Sub Cat). 

 

I want to achieve this using either UI policy or Client script, don't want to use ACL's.

 

I have created the below client script however it is not working as expected. Please help me if I am missing something.

 

 

function onLoad() {


//if(g_user.isMemberOf('TAM Cat and Sub Cat'))

 

//return;

 

g_form.addInfoMessage('Scratchpad : ' + g_scratchpad.isMember);

 

//if(g_user.isMemberOf('TAM Cat and Sub Cat') && answer < -60 )

 

if (g_scratchpad.isMember == true)

 

{

 

g_form.setVisible('u_tam_category',true);

 

g_form.setValue('u_tam_category','');

 

g_form.setMandatory('u_tam_category',true);

 

g_form.setVisible('u_tam_sub_category',true);

 

g_form.setValue('u_tam_sub_category','');

 

g_form.setMandatory('u_tam_sub_category',true);

 

g_form.setVisible('u_effort_in_hours',true);

 

g_form.setValue('u_effort_in_hours','');

 

g_form.setMandatory('u_effort_in_hours',true);

 

}

 

else

 

{


g_form.setVisible('u_tam_category',false);

 

g_form.setMandatory('u_tam_category',false);


g_form.setVisible('u_tam_sub_category',false);

 

g_form.setMandatory('u_tam_sub_category',false);

 

g_form.setVisible('u_effort_in_hours',false);

 

g_form.setMandatory('u_effort_in_hours',false);

 

}

 

}

1 ACCEPTED SOLUTION

Hi @Gunashekar use below code 

var getUser = Class.create();
getUser.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
    getGroupMember: function() {
        var User = gs.getUserID();
        var gr = new GlideRecord("sys_user_grmember");
        gr.addQuery('group.name', 'TAM Cat and Sub Cat');
        gr.addQuery('user', User);
        gr.query();
        return gr.hasNext();
    },
    type: 'getUser'
});
var ga = new GlideAjax('getUser');
    ga.addParam('sysparm_name', "getGroupMember");
    ga.getXML(DatParse);
    function DatParse(response) {
        var answer = response.responseXML.documentElement.getAttribute("answer");
        if (answer == 'true') {
           g_form.setVisible('u_tam_category', true);
           g_form.setVisible('u_tam_sub_category', true);
           g_form.setVisible('u_effort_in_hours', true);
       } else
           g_form.setVisible('u_tam_category',false);
           g_form.setVisible('u_tam_sub_category', false);
            g_form.setVisible('u_effort_in_hours', false);
      }

View solution in original post

7 REPLIES 7

Hi @Gunashekar use below code 

var getUser = Class.create();
getUser.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
    getGroupMember: function() {
        var User = gs.getUserID();
        var gr = new GlideRecord("sys_user_grmember");
        gr.addQuery('group.name', 'TAM Cat and Sub Cat');
        gr.addQuery('user', User);
        gr.query();
        return gr.hasNext();
    },
    type: 'getUser'
});
var ga = new GlideAjax('getUser');
    ga.addParam('sysparm_name', "getGroupMember");
    ga.getXML(DatParse);
    function DatParse(response) {
        var answer = response.responseXML.documentElement.getAttribute("answer");
        if (answer == 'true') {
           g_form.setVisible('u_tam_category', true);
           g_form.setVisible('u_tam_sub_category', true);
           g_form.setVisible('u_effort_in_hours', true);
       } else
           g_form.setVisible('u_tam_category',false);
           g_form.setVisible('u_tam_sub_category', false);
            g_form.setVisible('u_effort_in_hours', false);
      }

Hi @Sid_Takali 

 

Thank you for your help. It is working as expected.

 

However if i want to add more than one groups in the script include then how can i do it?

Manmohan K
Tera Sage

@Gunashekar 

 

The line below will not work . You can use GlideAjax as pointed by @Sid_Takali  

g_user.isMemberOf('TAM Cat and Sub Cat');