Script Include is not trigger for non-itil users

Lisa Goldman
Kilo Sage

Hello,

I have a script includes that query 'alm_asset' table to retrieve asset tag. It's working fine as an admin or ITIL user, but when I impersonate an end user with no roles, no data is returned."

 

Could someone please help?  Here is the script include for your review.  Thank you

 

LisaGoldman_0-1696385338955.png

 

 

 

1 ACCEPTED SOLUTION

@Lisa Goldman 

it should be simply this

var getAssetTag = Class.create();
getAssetTag.prototype = Object.extendsObject(AbstractAjaxProcessor, {

 

isPublic:function(){
return true;
},

getDetails: function() {
var arr = [];
var sysId = this.getParameter('sysparm_sysId');
var gr = new GlideRecord('alm_asset');
gr.addQuery('assigned_to', sysId);
gr.addQuery('asset_tag', '!=', '');
gr.query();
while (gr.next()) {
arr.push(gr.asset_tag.toString());
}
if (arr.length >= 2)
return arr.toString();
// else
// return '';
},

type: 'getAssetTag'
});
Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

20 REPLIES 20

Hi @Swamy Malluri 

This is how you would add a log in the script include? After adding gs.log, login as the user, then run it is that right?

 

getDetails: function() {
        gs.log("Start");
        var arr = [];
        var sysId = this.getParameter('sysparm_sysId');
        var gr = new GlideRecord('alm_asset');

        gr.addQuery('assigned_to', sysId);
        gr.addQuery('asset_tag''!=''');
        gr.query();
        while (gr.next()) {
            arr.push(gr.asset_tag.toString());
        }
        if (arr.length >= 2)
            return arr.toString();
      //  else
        //    return '';
    },

    type: 'getAssetTag'
});

Swamy Malluri
Tera Guru
Tera Guru

Hi @Lisa Goldman ,

Try adding more logs and see what result you are getting. And make sure you have valid asset assigned to logged in user in Asset table. 

 

getDetails: function() {
        gs.log("Start");
        var arr = [];
        var sysId = this.getParameter('sysparm_sysId');
        var gr = new GlideRecord('alm_asset');

 

        gr.addQuery('assigned_to', sysId);
        gr.addQuery('asset_tag''!=''');
        gr.query();
    gs.log("Query "+ gr.getEncodedQuery());
        while (gr.next()) {
            arr.push(gr.asset_tag.toString());
        }
gs.log("array is "+ arr);
gs.log("arr length "+ arr.length);
        if (arr.length >= 2)
            return arr.toString();
       else
         return '';
    },

 

    type: 'getAssetTag'
});
 
 
Thanks,
Swamy Malluri

Ankur Bawiskar
Tera Patron
Tera Patron

@Lisa Goldman 

Please add the isPublic function so that it works for end user with no roles

I included this function inside the script include

isPublic:function(){
return true;
},

 

var getAssetTag = Class.create();
getAssetTag.prototype = Object.extendsObject(AbstractAjaxProcessor, {

 

isPublic:function(){
return true;
},

getDetails: function() {
var arr = [];
var sysId = this.getParameter('sysparm_sysId');
var gr = new GlideRecord('alm_asset');
gr.addQuery('assigned_to', sysId);
gr.addQuery('asset_tag', '!=', '');
gr.query();
while (gr.next()) {
arr.push(gr.asset_tag.toString());
}
if (arr.length >= 2)
return arr.toString();
// else
// return '';
},

type: 'getAssetTag'
});

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Thank you @Ankur Bawiskar 

I would like to try what you have suggested, but encountering an error in the code:

 

LisaGoldman_0-1696390932256.png

 

@Lisa Goldman 

it should be simply this

var getAssetTag = Class.create();
getAssetTag.prototype = Object.extendsObject(AbstractAjaxProcessor, {

 

isPublic:function(){
return true;
},

getDetails: function() {
var arr = [];
var sysId = this.getParameter('sysparm_sysId');
var gr = new GlideRecord('alm_asset');
gr.addQuery('assigned_to', sysId);
gr.addQuery('asset_tag', '!=', '');
gr.query();
while (gr.next()) {
arr.push(gr.asset_tag.toString());
}
if (arr.length >= 2)
return arr.toString();
// else
// return '';
},

type: 'getAssetTag'
});
Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader