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

Sid_Takali
Kilo Patron

Hi @Gunashekar use client callable script include. script include should look like this

 

 

var getUser= Class.create();
getUser.prototype = Object.extendsObject(AbstractAjaxProcessor, {
	getGroupMembership: function(){
		var user = gs.getUserID();
		var gr = new GlideRecord("sys_user_grmember");
		gr.addQuery('group.name', 'group name');
                gr.addQuery('user', user);
                gr.query();
                return gr.hasNext();	
	},
	type: 'User'
});

 

 

Client Script :

 

 

function onLoad(){

var ga = new GlideAjax('getUser');
ga.addParam('sysparm_name', "getGroupMember");
ga.getXMLAnswer(function(answer){

if(answer.toString() == 'true'){
g_form.setVisible('u_tam_category', true);
}
else{
g_form.setVisible('u_tam_category',false);
}
});
}

 

 

Please mark reply as Helpful/Correct, if applicable.

Thanks,

Siddharam

Hi @Sid_Takali 

 

I tried the above above client script and script include however it is still not working.

 

Gunashekar_0-1686806008619.pngGunashekar_1-1686806038959.png

 

hi @Gunashekar try this this is working

SiddharamTakal_0-1686810540714.png

 

SiddharamTakal_2-1686810630142.png

Please don't forget mark reply as Helpful/Correct, if applicable.

Thanks,

Siddharam

Hi @Sid_Takali 

 

I tried the above code, it is hiding the fields however it is not making the fields visible to the users in group 'TAM Cat and Subcat.

 

var getUser= Class.create();
getUser.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
	getGroupMembership: 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'
});
function onLoad(){
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);
}
}