Does SheetJs work in netsuite serverside script

Hi All, I am trying to use sheetJs with NS? Does it work in serverside script within NS?

Rookie Asked on December 11, 2019 in SuiteScript.
Add Comment
2 Answer(s)
Best answer

I think SheetJS is not AMD-compatible by default, I had to shim (https://requirejs.org/docs/api.html#config-shim) it in with require config file corresponding to the @NAmdConfig JSDoc tag.

I have gotten it to work serverside in the past though if you just wanted some encouragement to invest time into that route 🙂

Intermediate Answered on December 11, 2019.

Thanks. Do you have any sample code which I can use for reference?

on December 11, 2019.

It was quite a while since I looked at it. If I recall correctly, I ended up needing to use the .core version for some reason and even then I had to go in and edit some source code in order to make certain things work serverside…my understanding of requirejs was lesser at that time though, so it might be done better/easier now.
This was the config setup though if that helps:


{

"baseUrl": "SuiteScripts/.../Libraries/",

"paths": {

"XLSX": "xlsx.core.min"

},

"shim": {

"XLSX": {

"exports": "XLSX"

}

}

}

on December 11, 2019.

Thanks. This works too. Even I am not so great with requireJs 🙁

on December 11, 2019.

I’m trying to get this to work with no  luck.

Here is the header of my Suitelet:

**

 *@NApiVersion 2.x

 *@NScriptType Suitelet

 *@NModuleScope Public

 *@NAmdConfig  ../Libraries/xlsx.json

 */

 

Here is the .json file:

{

    “baseUrl”: “SuiteScripts/xxx/Libraries/”,

    “paths”: {

    “XLSX”: “xlsx”

    },

    “shim”: {

        “XLSX”: {

            “exports”: “XLSX”

        }

    }

}

 

Here is the code in my Suitelet:

var wb = xlsx.utils.book_new();

       wb.Props = {

        Title: fileName,

        Subject: fileName,

        Author: “”,

        CreatedDate: new Date()

       };

       wb.SheetNames.push(fileName);

       var ws = xlsx.utils.aoa_to_sheet(rows);

       wb.Sheets[fileName] = ws;

       //var wbout = XLSX.write(wb, {bookType:’xlsx’,  type: ‘binary’});

       /*

       const result = xlsx.write(wb, {

        BookType:’xlsx’, // output file type

        Type:’buffer’, // data type of output

        Compression: true // turn on zip compression

        });*/

        var result = xlsx.write(wb, {bookType:”xlsx”, type:’base64′});

        var fileObj = file.create({

            name: fileName + ‘-‘ + dateString + ‘.xlsx’,

            fileType: file.Type.EXCEL,

            contents: result,

            folder: netsuiteFolder

        });

I’m getting an error on the first ine that it can’t find utils from undefined.

 

Thank you for the help

Jaime

 

 

on December 19, 2019.
Add Comment

While I’m not specifically familiar with Sheet, any AMD-compatible module should work with server-side SuiteScript. Exceptions will be modules which depend on browser APIs like window or document etc.

Beginner Answered on December 11, 2019.

And for SS2.0, anything that requires ES6+ features

on December 12, 2019.
Add Comment

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.
  • This site made possible by our sponsors:   Tipalti   Celigo   Limebox   Become a Sponsor   Become a Sponsor