Skip to main content

Advanced Reporting Techniques

Report referencing a script include to pull back sysids to condition field:


Report:



sys id filter:

javascript:new refqual_functions().report_sysidlist('auth_request');


script include code, note: the client callable box must be ticked (note, the script include contains some bonus code for refreshing group membership of a group to contain open approvals used for chasing up approvals via a scheduled email of the report)


var refqual_functions = Class.create();
refqual_functions.prototype = {
    initialize: function() {
        //gs.log('test initialise--', 'refqual_functions');
       
       
    },
   
    report_sysidlist: function(filterToApply){
        //--build up list of sysids to return to a report condition field filter by sysid
        gs.log('test--', 'refqual_functions');
       
        var ids = [];
        if (filterToApply=='auth_request'){
            //--build up a list of sysids to return to ' Auth Process  Outstanding Approvals' report,
            var grApprovals=new GlideRecord('sysapproval_approver');
            grApprovals.addQuery('state','requested');
            grApprovals.query();
            while(grApprovals.next()){
                var grReqItem=new GlideRecord('sc_req_item');
                grReqItem.addQuery('sys_id', grApprovals.sysapproval);
            grReqItem.addQuery('order_guide','7d292af7371c57008ca1138943990e7d'); //--auth req order guide
                grReqItem.query();
                if (grReqItem.next()){
                    ids.push(grApprovals.sys_id.toString());
                }
            }
        }
        return ids;
    },
   
    refresh_groupMemberShip_authprocess: function(){
        //--called from sch job 'refresh group  Auth Requests Open Approvals'
        //--group membership to refresh a group membership list
        var grGroupMem_old=new GlideRecord('sys_user_grmember');
        grGroupMem_old.addQuery('group', 'e6cda34137cdd7403bef532e53990e91');//--" Auth Requests Open Approvals"
        //grGroupMem_old.query();
        //gs.print(grGroupMem_old.getRowCount());
        grGroupMem_old.deleteMultiple();
       
        var grApprovals=new GlideRecord('sysapproval_approver');
        grApprovals.addQuery('state','requested');
        grApprovals.query();
        while(grApprovals.next()){
            var grReqItem=new GlideRecord('sc_req_item');
            grReqItem.addQuery('sys_id', grApprovals.sysapproval);
        grReqItem.addQuery('order_guide','7d292af7371c57008ca1138943990e7d'); //--auth req order guide
            grReqItem.query();
            if (grReqItem.next()){
                if (this._checkAlreadyGroupMember('e6cda34137cdd7403bef532e53990e91', grApprovals.approver)==0){
                   
                    var grGroupMem=new GlideRecord('sys_user_grmember');
                    grGroupMem.newRecord();
                    grGroupMem.group='e6cda34137cdd7403bef532e53990e91';//--" Auth Requests Open Approvals"
                    grGroupMem.user=grApprovals.approver;
                    grGroupMem.insert();
                }
            }
        }
    },
   
    _checkAlreadyGroupMember: function(groupSYSID, userSYSID){
        var grGroupMem=new GlideRecord('sys_user_grmember');
        grGroupMem.addQuery('group', groupSYSID);
        grGroupMem.addQuery('user', userSYSID);
        grGroupMem.query();
        return (grGroupMem.getRowCount());
        //--returns zero if not a member
    },
   
    type: 'refqual_functions'



};

Comments

Popular posts from this blog

Get URL Parameter - server side script (portal or classic UI)

Classic UI : var sURL_editparam = gs . action . getGlideURI (). getMap (). get ( ' sysparm_aparameter ' ); if ( sURL_editparam == 'true' ) { gs . addInfoMessage ( 'parameter passed ); } Portal : var sURL_editparam = $sp . getParameter ( " sysparm_aparameter " ); if ( sURL_editparam == 'true' ) { gs . addInfoMessage ( 'parameter passed ); }

ServiceNow - script include: build up the results as a JSON object (array) - example 2

function call var sCurrentGroupMembers = new <script_include> (). getGroupMembers ( group_sysid ); gs . print ( 'sCurrentGroupMembers:' + sCurrentGroupMembers ); var oGroupMembers = JSON . parse ( sCurrentGroupMembers ); gs . print ( JSON . stringify ( oGroupMembers . users )); oNewGroupMember = JSON . parse ( group_members ); var oGroupConfig = getGroupDeltas ( oGroupMembers . users , oNewGroupMember ); gs . print ( JSON . stringify ( oGroupConfig . remove )); gs . print ( JSON . stringify ( oGroupConfig . add )) output : *** Script: sCurrentGroupMembers: {"manager":"3b2649efdb0f8c10cc0652f3f39xxxxx", "email":"", "type":"33a2226edb99c340edfc7cbdae96xxxx", "description":"Created for xyz", "users":[{"user":"3b2649efdb0f8c10cc0652f3f396xxxx"},{"user":"856a8f71db3d73041b4ffc45ae96196a"},{"user":"3752771