Parser value not come

KARTHICK5
Tera Contributor

Hi,

The below script is not working for me.  what is the problem in this code or any thing need to modify?

i have doubt sn_imex is deprecated.

 

var parser = new sn_impex.GlideExcelParser();
var attachment = new GlideSysAttachment();
// use attachment sys id of an excel file
var attachmentStream = attachment.getContentStream(<attachment sys id>);

parser.parse(attachmentStream);

//retrieve the column headers
var headers = parser.getColumnHeaders();
var header1 = headers[0];
var header2 = headers[1];

//print headers
gs.info(header1 + “ “ + header2);

while(parser.next()) {
var row = parser.getRow();
//print row value for both columns
gs.info(row[header1] + ‘ ‘ + row[header2])
}

3 REPLIES 3

Ankur Bawiskar
Tera Patron
Tera Patron

@KARTHICK5 

check this link

How to populate Manager field(reference type) and effective date from excel sheet when using Glide ... 

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, 

I am getting below response after executing this script.

var parser = new sn_impex.GlideExcelParser();
var attachment = new GlideSysAttachment();
// use attachment sys id of an excel file
var attachmentStream = attachment.getContentStream('8f8790e78727b510be1584c50cbb3505');
parser.parse(attachmentStream);
//retrieve the column headers
var headers = parser.getColumnHeaders();
gs.info(JSON.stringify(headers));
var header1 = headers[0];
var header2 = headers[1];
//print headers
gs.info(header1 + " " + header2);
while(parser.next()) {
var row = parser.getRow();
//print row value for both columns
gs.info(row[header1] + ' ' + row[header2])
}

 

Output:

x_sitl: null
Evaluator: com.glide.script.RhinoEcmaError: Cannot read property "0" from null script : Line(9) column(0) 6: //retrieve the column headers 7: var headers = parser.getColumnHeaders(); 8: gs.info(JSON.stringify(headers)); ==> 9: var header1 = headers[0]; 10: var header2 = headers[1]; 11: //print headers 12: gs.info(header1 + " " + header2);

 

Maxim Koybaev
Tera Contributor

Hi @KARTHICK5,
check the documentation link: 

GlideExcelParser - Scoped, Global

This should work:

 

var parser = new sn_impex.GlideExcelParser();
var attachment = new GlideSysAttachment();
// use attachment sys id of an excel file
var attachmentStream = attachment.getContentStream('<attachment_id>');
// Set the source to be parsed
parser.setSource(attachmentStream);
// Get the worksheet names to be parsed in the Excel document
var list_sheet_name = parser.getSheetNames();
// Iterate over each worksheet in the Excel workbook
for (var i = 0; i < list_sheet_name.length; i++) {
    gs.info("**************************************************************************************");
    gs.info("Sheet name:    " + list_sheet_name[i]);
    // Set the worksheet name to be parsed
    parser.setSheetName(list_sheet_name[i]);
    // Parse each worksheet set using setSheetName()
    if (parser.parse()) {
        //retrieve the column headers
        var headers = parser.getColumnHeaders();
        var header1 = headers[0];
        var header2 = headers[1];

        while (parser.next()) {
            var row = parser.getRow();
            //print row value for both columns
            gs.info(row[header1] + '\t|| ' + row[header2]);
        }
    } else
        gs.info(parser.getErrorMessage());
}

 

Regards
Maxim