onBefore script transform map

Vengeful
Mega Sage

Hello,

I am trying to load data, but after the transport map there's an error.

Merza_1-1687754032577.png

 

Can you please help to check my script there's an error variable is not defined.

Merza_0-1687753912626.png

 

Code:

 

(function runTransformScript(source, map, log, target /*undefined onStart*/ ) {
 
    // Add your code here
    gs.log("Values = " + source.u_shift + "\n" + source.u_chinese_name + "\n" + source.u_english_name + "\n" + source.u_job_title + "\n" + source.u_department + "\n" + source.u_location + "\n" + source.u_global_id__sf_id_ + "\n" + source.u_remarks + "\n" + source.u_start_date + "\n" + source.u_name + "\n" + source.u_first_name + "\n" + source.u_given_name + "\n" + source.u_employee_number + "\n" + source.u_description);
 
    var managerExist = checkRecord(source.u_manager,"sys_user");
var locationExist = checkRecord(source.u_location,"cmn_location");
var departmentExist = checkRecord(source.u_department,"cmn_department");
    gs.log("Manager found = " + JSON.stringify(managerExist));
    if (managerExist.found == "true" && source.u_onboard_date!="") {
        var cart = new Cart();
        var item = cart.addItem('e0fd19ce1b1be8d0efd69829bc4bcb41');
        cart.setVariable(item, 'shift', source.u_shift);
        cart.setVariable(item, 'chinese_name', source.u_local_language_name);
        cart.setVariable(item, 'english_name', source.u_english_name);
        cart.setVariable(item, 'manager', managerExist.name);
        cart.setVariable(item, 'job_title', source.u_job_title);
        cart.setVariable(item, 'department', departmentExist.name);
cart.setVariable(item, 'pc_deployment', source.u_pc_deployment);
        cart.setVariable(item, 'location', locationExist.name);
        cart.setVariable(item, 'ocn', source.u_global_id__sf_id_);
        cart.setVariable(item, 'remarks', source.u_remarks);
        cart.setVariable(item, 'start_date', source.u_start_date);
cart.setVariable(item, 'name', source.u_name);
cart.setVariable(item, 'first_name', source.u_first_name);
cart.setVariable(item, 'given_name', source.u_given_name);
cart.setVariable(item, 'employee_number', source.u_employee_number);
cart.setVariable(item, 'description', source.u_description);
cart.setVariable(item, 'created_by_excel', "true");
        // cart.setVariable(item,'same_access_as',source.u_same_access_as);
 
        var rc = cart.placeOrder();
        gs.log("Request = " + rc.number);
        var gr = new GlideRecord("sc_req_item");
        if (gr.get("request", rc.sys_id)) {
            gs.log("RITM = " + gr.number);
            gr.short_description = gr.short_description+" - "+gr.getDisplayValue("opened_by.country");
            gr.update();
        }
    }
 
 
    function checkRecord(name,table) {
        var record = {};
        record.name = "";
        record.found = "false";
        gs.log("Checking user " + name);
        var gr = new GlideRecord(table);
        if (gr.get("name", name) && name!="") {
            record.found = "true";
            record.name = gr.getValue("sys_id");
 
        }
 
        return record;
    }
 
 
    ignore = true;
 
})(source, map, log, target);
2 ACCEPTED SOLUTIONS

@Vengeful 

it will ignore as you are adding that line at the end of code

Also are you sure this IF statement gave true? the only it will start the Cart API

if (managerExist.found == "true" && source.u_onboard_date!="") {

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

View solution in original post

Amit Gujarathi
Giga Sage
Giga Sage

HI @Vengeful ,
I trust you are doing great.
Here's an updated version of your code with comments explaining the changes:

 

(function runTransformScript(source, map, log, target) {
    // Add your code here
    gs.log(
        "Values = " +
        source.u_shift + "\n" +
        source.u_chinese_name + "\n" +
        source.u_english_name + "\n" +
        source.u_job_title + "\n" +
        source.u_department + "\n" +
        source.u_location + "\n" +
        source.u_global_id__sf_id_ + "\n" +
        source.u_remarks + "\n" +
        source.u_start_date + "\n" +
        source.u_name + "\n" +
        source.u_first_name + "\n" +
        source.u_given_name + "\n" +
        source.u_employee_number + "\n" +
        source.u_description
    );

    // Check if the manager, location, and department records exist
    var managerExist = checkRecord(source.u_manager, "sys_user");
    var locationExist = checkRecord(source.u_location, "cmn_location");
    var departmentExist = checkRecord(source.u_department, "cmn_department");
    gs.log("Manager found = " + JSON.stringify(managerExist));

    // Check if the manager record exists and the source has an onboard date
    if (managerExist.found === "true" && source.u_onboard_date !== "") {
        var cart = new Cart();
        var item = cart.addItem('e0fd19ce1b1be8d0efd69829bc4bcb41');

        // Set variables for the cart item
        cart.setVariable(item, 'shift', source.u_shift);
        cart.setVariable(item, 'chinese_name', source.u_local_language_name);
        cart.setVariable(item, 'english_name', source.u_english_name);
        cart.setVariable(item, 'manager', managerExist.name);
        cart.setVariable(item, 'job_title', source.u_job_title);
        cart.setVariable(item, 'department', departmentExist.name);
        cart.setVariable(item, 'pc_deployment', source.u_pc_deployment);
        cart.setVariable(item, 'location', locationExist.name);
        cart.setVariable(item, 'ocn', source.u_global_id__sf_id_);
        cart.setVariable(item, 'remarks', source.u_remarks);
        cart.setVariable(item, 'start_date', source.u_start_date);
        cart.setVariable(item, 'name', source.u_name);
        cart.setVariable(item, 'first_name', source.u_first_name);
        cart.setVariable(item, 'given_name', source.u_given_name);
        cart.setVariable(item, 'employee_number', source.u_employee_number);
        cart.setVariable(item, 'description', source.u_description);
        cart.setVariable(item, 'created_by_excel', "true");

        // Place the order and retrieve the request
        var rc = cart.placeOrder();
        gs.log("Request = " + rc.number);
        var gr = new GlideRecord("sc_req_item");
        if (gr.get("request", rc.sys_id)) {
            gs.log("RITM = " + gr.number);
            gr.short_description = gr.short_description + " - " + gr.getDisplayValue("opened_by.country");
            gr.update();
        }
    }

    // Function to check if a record exists in a table
    function checkRecord(name, table) {
        var record = {};
        record.name = "";
        record.found = "false";
        gs.log("Checking user " + name);
        var gr = new GlideRecord(table);
        if (gr.get("name", name) && name !== "") {
            record.found = "true";
            record.name = gr.getValue("sys_id");
        }

        return record;
    }

    ignore = true;
})(source, map, log, target);

 


Was this answer helpful?


Please consider marking it correct or helpful.


Your feedback helps us improve!


Thank you!


Regards,


Amit Gujrathi



View solution in original post

8 REPLIES 8

@Vengeful 

are you sure you are giving correct variable names and passing correct values for those?

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

Tony Chatfield1
Kilo Patron

Hi, have you confirmed that the script is not configured as an onStart transform script?

Hi @Tony Chatfield1 

The script is configured as onBefore

Merza_0-1687757221977.png

 

Amit Gujarathi
Giga Sage
Giga Sage

HI @Vengeful ,
I trust you are doing great.
Here's an updated version of your code with comments explaining the changes:

 

(function runTransformScript(source, map, log, target) {
    // Add your code here
    gs.log(
        "Values = " +
        source.u_shift + "\n" +
        source.u_chinese_name + "\n" +
        source.u_english_name + "\n" +
        source.u_job_title + "\n" +
        source.u_department + "\n" +
        source.u_location + "\n" +
        source.u_global_id__sf_id_ + "\n" +
        source.u_remarks + "\n" +
        source.u_start_date + "\n" +
        source.u_name + "\n" +
        source.u_first_name + "\n" +
        source.u_given_name + "\n" +
        source.u_employee_number + "\n" +
        source.u_description
    );

    // Check if the manager, location, and department records exist
    var managerExist = checkRecord(source.u_manager, "sys_user");
    var locationExist = checkRecord(source.u_location, "cmn_location");
    var departmentExist = checkRecord(source.u_department, "cmn_department");
    gs.log("Manager found = " + JSON.stringify(managerExist));

    // Check if the manager record exists and the source has an onboard date
    if (managerExist.found === "true" && source.u_onboard_date !== "") {
        var cart = new Cart();
        var item = cart.addItem('e0fd19ce1b1be8d0efd69829bc4bcb41');

        // Set variables for the cart item
        cart.setVariable(item, 'shift', source.u_shift);
        cart.setVariable(item, 'chinese_name', source.u_local_language_name);
        cart.setVariable(item, 'english_name', source.u_english_name);
        cart.setVariable(item, 'manager', managerExist.name);
        cart.setVariable(item, 'job_title', source.u_job_title);
        cart.setVariable(item, 'department', departmentExist.name);
        cart.setVariable(item, 'pc_deployment', source.u_pc_deployment);
        cart.setVariable(item, 'location', locationExist.name);
        cart.setVariable(item, 'ocn', source.u_global_id__sf_id_);
        cart.setVariable(item, 'remarks', source.u_remarks);
        cart.setVariable(item, 'start_date', source.u_start_date);
        cart.setVariable(item, 'name', source.u_name);
        cart.setVariable(item, 'first_name', source.u_first_name);
        cart.setVariable(item, 'given_name', source.u_given_name);
        cart.setVariable(item, 'employee_number', source.u_employee_number);
        cart.setVariable(item, 'description', source.u_description);
        cart.setVariable(item, 'created_by_excel', "true");

        // Place the order and retrieve the request
        var rc = cart.placeOrder();
        gs.log("Request = " + rc.number);
        var gr = new GlideRecord("sc_req_item");
        if (gr.get("request", rc.sys_id)) {
            gs.log("RITM = " + gr.number);
            gr.short_description = gr.short_description + " - " + gr.getDisplayValue("opened_by.country");
            gr.update();
        }
    }

    // Function to check if a record exists in a table
    function checkRecord(name, table) {
        var record = {};
        record.name = "";
        record.found = "false";
        gs.log("Checking user " + name);
        var gr = new GlideRecord(table);
        if (gr.get("name", name) && name !== "") {
            record.found = "true";
            record.name = gr.getValue("sys_id");
        }

        return record;
    }

    ignore = true;
})(source, map, log, target);

 


Was this answer helpful?


Please consider marking it correct or helpful.


Your feedback helps us improve!


Thank you!


Regards,


Amit Gujrathi