Global script include method always return undefined value

dhanu3
Kilo Sage

We are trying to execute script include from business rule and for testing tried from background script also.

Script include is not client callable as we are calling it from server side only and Accessible from is 'All application scope'.

We are calling it from global scope only.

When we print the value of variable before return statement it gives correct value. But when it returns and we are printing the output of script include method it return undefined. We tried by defining static value and returning it gives same result.

return "some sys id"; this statement also gives undefined answer.

 

Regards,

Dhanashree

 

1 ACCEPTED SOLUTION

@dhanu3 

try this and see

var getOwner = Class.create();
getOwner.prototype = {
    initialize: function() {},

    getOwner: function(approver) {
        var ul, lastMgr, path;
        var t = this.getManager(approver);
        var exe = t.split(' ');
        path = exe[1];
        lastMgr = exe[0];

        if (path == '') {
            ul = approver;
        } else if (path == '1000M') {
            ul = approver;
        } else {
            ul = this.getOwner(lastMgr); // Ensure the recursive call returns a value
        }

        if (ul != '' && ul != undefined) {
            gs.log("UL " + ul, 'UL');
            return "UL " + ul;
        }
    },

    getManager: function(user) {
        var man, path;
        var getM = new GlideRecord('sys_user');
        if (getM.get(user)) {
            if (getM.active == true) {
                man = getM.manager;
                path = getM.manager.u_org_path.u_path;
                return man.toString() + ' ' + path.toString();
            }
        }
    },

    type: 'getOwner'
};

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

View solution in original post

13 REPLIES 13

Ankur Bawiskar
Tera Patron
Tera Patron

@dhanu3 

you created script include in global scope and made accessible from all

how are you calling it? from scoped app?

share the script and also the screenshots.

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

Hi @Ankur Bawiskar ,

 

We are calling it from global scope only. And the script is recursive. We are calling same function if criteria is not matching.

When we execute the script separately(from background script). without calling from script include it works correctly.

 

The script is on Client instance so I will not be able to share it. I will try to paste dummy script.

 

Regards,

Dhanashree

@dhanu3

so script include is in which scope? global or scope?

without sharing the script etc can't help

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

Script include, business rule everything is in global scope only