2.9 KiB
| title |
|---|
| NetSuite |
This demo discusses the key SheetJS operations. Familiarity with SuiteScript 2 is assumed. The following sections of the SuiteScript documentation should be perused before reading this demo:
- SuiteScript 2.x API Introduction is an introduction that includes a simple example with deployment details,
- SuiteScript 2.x Custom Modules covers custom modules and adding third party scripts to modules.
N/fileModule covers theN/filemodule. It is the main API for interacting with files.
The library plays nice with each script type, including RESTlets and Suitelets.
Loading the SheetJS Standalone Script
This script
plays nice with SuiteScript define. It should be downloaded and uploaded to
the File Cabinet.
After uploading, create a JSON configuration file (or add the alias to an
existing config file). The reference points to the file and omits the .js.
{
"paths": {
// highlight-next-line
"xlsx": "/SuiteScripts/xlsx.full.min"
}
}
This config file should be referenced in SuiteScripts using @NAmdConfig. This
part is documented in "Import a third-party JavaScript Library":
/**
* @NApiVersion 2.x
// highlight-next-line
* @NAmdConfig ./JsLibraryConfig.json
* ... more options ...
*/
// highlight-next-line
define(['N/file', 'xlsx'], function(file, XLSX) {
// ... use XLSX here ...
});
Reading Files
N/file provides file.load
for pulling files:
File#getContents
returns the data as a Base64-encoded string which can be read with XLSX.read:
/* load file */
var f = file.load({ id: id_of_file });
/* parse */
var workbook = XLSX.read(f.getContents(), {type: "base64"});
Writing Files
N/file provides file.create
and file.load for creating and loading files respectively.
Binary content must be Base64-encoded. Fortunately, XLSX.write with base64
type will generate compatible Base64 strings:
/* write XLSX workbook as Base64 string */
var out = XLSX.write(workbook, { bookType: "xlsx", type: "base64" });
/* create file */
var newfile = file.create({
name: 'test.xlsx', // replace with desired name
fileType: file.Type.EXCEL,
contents: out
});
/* save */
newfile.save();