The CreatorCon Call for Content is officially open! Get started here.

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() || ''