forked from sheetjs/docs.sheetjs.com
		
	
		
			
	
	
		
			89 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			89 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|  | --- | ||
|  | sidebar_position: 5 | ||
|  | --- | ||
|  | 
 | ||
|  | # 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](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/chapter_4387172221.html) | ||
|  |   is an introduction that includes a simple example with deployment details, | ||
|  | - [SuiteScript 2.x Custom Modules](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/chapter_4704097697.html) | ||
|  |   covers custom modules and adding third party scripts to modules. | ||
|  | - [`N/file` Module](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_4205693274.html) | ||
|  |   covers the `N/file` module.  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](https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min.js) | ||
|  | 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`. | ||
|  | 
 | ||
|  | ```json | ||
|  | { | ||
|  |   "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"](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_4704111062.html#bridgehead_4738199877): | ||
|  | 
 | ||
|  | ```js | ||
|  | /** | ||
|  | * @NApiVersion 2.x | ||
|  | // highlight-next-line | ||
|  | * @NAmdConfig  ./JsLibraryConfig.json | ||
|  | * ... more options ... | ||
|  | */ | ||
|  | // highlight-next-line | ||
|  | define(['N/file', 'xlsx'], function(file, XLSX) { | ||
|  |   ... | ||
|  | }); | ||
|  | ``` | ||
|  | 
 | ||
|  | ## Reading Files
 | ||
|  | 
 | ||
|  | `N/file` provides [`file.load`](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_4226574300.html) | ||
|  | for pulling files: | ||
|  | 
 | ||
|  | [`File#getContents`](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_4229269811.html) | ||
|  | returns the data as a Base64-encoded string which can be read with `XLSX.read`: | ||
|  | 
 | ||
|  | ```js | ||
|  | /* 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`](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_4223861820.html) | ||
|  | 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: | ||
|  | 
 | ||
|  | ```js | ||
|  | /* 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(); | ||
|  | ``` |