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.

Receiving error "the undefined value has no properties" calling script

ASHLE CRAIG
Giga Contributor

Hello,

I have am having trouble when I test my script. I dont think my array is working or in the right location. 

I want to push all the servers im getting into an array. 

 

 

var user = gs.getUserID();

var arr = [];

var ccsd = new GlideRecord('cmdb_ci_service_discovered');
ccsd.addQuery('owned_by', user);
ccsd.query();
 
var userArr = [];
while (ccsd.next()) {
    userArr.push(ccsd.sys_id.toString());
}
gs.info("User: " + userArr);

 

var ac = new GlideRecord('sc_item_option_mtom');
ac.addEncodedQuery('request_item.cat_item=03d635091b2195101953ca242a4bcb60^sc_item_option.item_option_new=b649798d1b2195101953ca242a4bcbd4^sc_item_option.valueIN' + userArr);
ac.query();

 

while (ac.next()) {
    var tm = new GlideRecord('sc_item_option_mtom');
    tm.addEncodedQuery('request_item.cat_item=03d635091b2195101953ca242a4bcb60^sc_item_option.item_option_new=9e481bd99769915048439904a253afba^request_item=' + ac.request_item);
    tm.query();

 

    while (tm.next()) {

 

        var gr = new GlideRecord('cmdb_group');
        gr.addEncodedQuery('sys_id=' + tm.sc_item_option.value);
        gr.query();
        while (gr.next()) {
           
            var cgceq = new GlideRecord('cmdb_group_contains_encoded_query');
            cgceq.addQuery('group', gr.sys_id);
            cgceq.query();

 

            while (cgceq.next()) {
                var servers = new GlideRecord(cgceq.class);
                servers.addEncodedQuery(cgceq.condition);
                servers.query();
               
                while (servers.next()) {
                    arr.push({
                        application_name: servers.name.toString(),
                        app_code: servers.u_app_code.toString(),
                        application_criticality: servers.business_criticality.toString(),
                        ritm_number: servers.sc_item_option.number.sc_req_item.toString(),
                        dateTime: servers.opened_at.toString(),
                        due_Date: servers.sc_item_option.number.sc_req_item.due_date.toString()
                    })
                    gs.info(arr);
                }
            }gs.info("CGCEQ " + cgceq.sys_id);
            gs.info(cgceq.class);
            
        }gs.info("Target Machine: " + tm.sys_id);
        gs.info("Group Name: " + gr.group_name);
    }
    gs.info("AppCat: " + ac.sys_id);
}



gs.info("Group Name: " + gr.group_name);
 
Error Below:

1 ACCEPTED SOLUTION

AnirudhKumar
Mega Sage

Hello @ASHLE CRAIG ,

On first look, your script seems fine to me.

But what might be causing the undefined error could be in the below lines:

application_name: servers.name.toString(),
app_code: servers.u_app_code.toString(),
application_criticality: servers.business_criticality.toString(),
ritm_number: servers.sc_item_option.number.sc_req_item.toString(),
dateTime: servers.opened_at.toString(),
due_Date: servers.sc_item_option.number.sc_req_item.due_date.toString()

 

if the value of servers.name is empty,  server.name.toString() would return an Undefined error.

Likewise if the value of servers.u_app_code is empty,  servers.u_app_code.toString() would return an Undefined error.

 

try replacing the above code block with the below:

application_name: servers.name.toString() || '',
app_code: servers.u_app_code.toString() || '',
application_criticality: servers.business_criticality.toString() || '',
ritm_number: servers.sc_item_option.number.sc_req_item.toString() || '',
dateTime: servers.opened_at.toString() || '',
due_Date: servers.sc_item_option.number.sc_req_item.due_date.toString() || ''

View solution in original post

1 REPLY 1

AnirudhKumar
Mega Sage

Hello @ASHLE CRAIG ,

On first look, your script seems fine to me.

But what might be causing the undefined error could be in the below lines:

application_name: servers.name.toString(),
app_code: servers.u_app_code.toString(),
application_criticality: servers.business_criticality.toString(),
ritm_number: servers.sc_item_option.number.sc_req_item.toString(),
dateTime: servers.opened_at.toString(),
due_Date: servers.sc_item_option.number.sc_req_item.due_date.toString()

 

if the value of servers.name is empty,  server.name.toString() would return an Undefined error.

Likewise if the value of servers.u_app_code is empty,  servers.u_app_code.toString() would return an Undefined error.

 

try replacing the above code block with the below:

application_name: servers.name.toString() || '',
app_code: servers.u_app_code.toString() || '',
application_criticality: servers.business_criticality.toString() || '',
ritm_number: servers.sc_item_option.number.sc_req_item.toString() || '',
dateTime: servers.opened_at.toString() || '',
due_Date: servers.sc_item_option.number.sc_req_item.due_date.toString() || ''