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?
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 🙂
Thanks. Do you have any sample code which I can use for reference?
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" } } }
Thanks. This works too. Even I am not so great with requireJs 🙁
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
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.
And for SS2.0, anything that requires ES6+ features