From 5ff93dc4b77de71420ed09b0d524ee54b2c2410f Mon Sep 17 00:00:00 2001 From: SheetJS Date: Tue, 18 Apr 2023 00:46:43 -0400 Subject: [PATCH] gsheet-udf --- docz/docs/03-demos/09-cloud/03-gsheet.md | 8 + docz/docs/03-demos/10-extensions/04-gsheet.md | 198 ++++++++++++++++++ docz/static/gsheet/udf.png | Bin 0 -> 53937 bytes docz/version.js | 2 +- 4 files changed, 207 insertions(+), 1 deletion(-) create mode 100644 docz/docs/03-demos/10-extensions/04-gsheet.md create mode 100644 docz/static/gsheet/udf.png diff --git a/docz/docs/03-demos/09-cloud/03-gsheet.md b/docz/docs/03-demos/09-cloud/03-gsheet.md index d6d6731..48afbb9 100644 --- a/docz/docs/03-demos/09-cloud/03-gsheet.md +++ b/docz/docs/03-demos/09-cloud/03-gsheet.md @@ -16,6 +16,14 @@ referenced API version will be available in the future. ::: +:::note + +This demo focuses on external data processing. For Google Apps Script custom +functions, [the "Google Sheets" extension demo](/docs/demos/extensions/gsheet) +covers Apps Script integration. + +::: + ## Initial Configuration Install the dependencies: diff --git a/docz/docs/03-demos/10-extensions/04-gsheet.md b/docz/docs/03-demos/10-extensions/04-gsheet.md new file mode 100644 index 0000000..cfaa69b --- /dev/null +++ b/docz/docs/03-demos/10-extensions/04-gsheet.md @@ -0,0 +1,198 @@ +--- +title: Google Sheets +pagination_prev: demos/cloud/index +pagination_next: demos/bigdata/index +--- + +:::note + +This demo focuses on Google Apps Script custom functions. For external data +processing, [the "Google Sheets" cloud data demo](/docs/demos/cloud/gsheet) +covers the API for NodeJS scripts + +::: + +The [Standalone scripts](/docs/getting-started/installation/standalone) can be +uploaded into an Apps Script project. Once uploaded, the `XLSX` variable is +available to other scripts in the project. + +Google Sheets currently does not provide support for working with Apple Numbers +files and some legacy file formats. SheetJS fills the gap. + +The [Complete Demo](#complete-demo) defines a `SHEETJS` function that fetches a +remote file, parses the contents, and writes data to the sheet: + +![Screenshot of final result](pathname:///gsheet/udf.png) + +:::note + +This demo was last tested on 2023 April 17. + +::: + +## Integration Details + +### Adding the script + +The `clasp` command line tool can be used to upload the standalone script: + +```bash +npx @google/clasp clone SCRIPT_ID +curl -LO https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min.js +npx @google/clasp push +``` + +Once uploaded, the script `xlsx.full.min.gs` will be added to the project. + +The [Complete Demo](#complete-demo) includes more detailed setup instructions. + +### Fetching data + +`UrlFetchApp.fetch` performs a network request and returns a `HTTPResponse`: + +```js +const response = UrlFetchApp.fetch("https://sheetjs.com/pres.numbers"); +``` + +`HTTPResponse#getContent` returns the file data as an array of *signed* bytes: + +```js +const content = response.getContent(); +``` + +The `"array"` type for `XLSX.read` expects an array of *unsigned* bytes. +Fortunately, the content can be corrected with bitwise operations: + +```js +for(var i = 0; i < content.length; ++i) content[i] &= 0xFF; +const wb = XLSX.read(content, { type: "array" }); +``` + +### Returning data + +`XLSX.utils.sheet_to_json` with the option `header: 1` returns arrays of arrays +that play nice with Google Sheets: + +```js +const first_worksheet = wb.Sheets[wb.SheetNames[0]]; +const aoa = XLSX.utils.sheet_to_json(first_worksheet, {header: 1}); +``` + +## Complete Demo + +This demo creates a function `SHEETJS(url)` that fetches the specified URL, +extracts data from the first worksheet, and writes the data + +### Initial Setup + +0) Sign into a Google account (or create a new one) + +1) In a terminal window, run + +```bash +npx @google/clasp login +``` + +A browser window should direct to an account selection page. Select the account +from the previous step. In the next page, there will be a title like + +> clasp – The Apps Script CLI wants to access your Google Account + +At the bottom of the screen, click "Allow". + +The terminal window should now state + +``` +Authorization successful. +``` + +### Creating a Sheet + +2) Sign into Google Sheets with the same account and create a new blank sheet + +3) Open up the apps script window (Extensions > Apps Script) + +4) Click the gear icon (Project Settings) and copy the Script ID + +### Cloning the Apps Script + +5) In the terminal window, create a new folder for your project: + +```bash +mkdir SheetJSGAS +cd SheetJSGAS +``` + +6) Clone the Apps Script project. The official command is: + +```bash +npx @google/clasp clone PASTE_YOUR_ID_HERE +``` + +Type `npx @google/clasp clone ` in the terminal with a trailing space (do not +press Enter yet!), then copy the Script ID from the Apps Script settings page +and paste in the terminal. Press Enter after pasting the ID. + +### Adding the SheetJS Library + +7) Download the standalone build and move to the project directory: + +```bash +curl -LO https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min.js +``` + +8) Push the project to Apps Script: + +```bash +npx @google/clasp push +``` + +:::caution + +If the push command fails with an error message like + +> User has not enabled the Apps Script API + +The message includes a URL (`https://script.google.com/home/usersettings` when +the demo was last tested). Visit that URL and enable the Google Apps Script API. +After enabling the API, run `npx @google/clasp push` again. + +::: + +9) Reopen the Google Sheet and Apps Script editor (Extensions > Apps Script). + +In the Files listing, there should be a new entry `xlsx.full.min.gs` + +### Creating a Custom Function + +10) In Apps Script editor, select `Code.gs` and erase the code in the editor. +Replace with the following function: + +```js title="Code.gs" +function SHEETJS(url) { + /* fetch data */ + const res = UrlFetchApp.fetch(url || "https://sheetjs.com/pres.numbers"); + const content = res.getContent(); + + /* fix data */ + for(var i = 0; i < content.length; ++i) content[i] &= 0xFF; + + /* parse */ + const wb = XLSX.read(content, {type: "array"}); + + /* generate array of arrays from worksheet */ + const ws = wb.Sheets[wb.SheetNames[0]]; + const aoa = XLSX.utils.sheet_to_json(ws, {header: 1}); + return aoa; +} +``` + +Click the "Save Project" icon to save the project. + +11) In the Google Sheets window, select cell A1 and enter the formula + +``` +=SHEETJS("https://sheetjs.com/pres.numbers") +``` + +The file will be fetched and the contents will be written to the sheet. diff --git a/docz/static/gsheet/udf.png b/docz/static/gsheet/udf.png new file mode 100644 index 0000000000000000000000000000000000000000..d7149ef8abfaf651b5f95b61363c9d8b23ee6621 GIT binary patch literal 53937 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≶ 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 literal 0 HcmV?d00001 diff --git a/docz/version.js b/docz/version.js index 592db19..64be04b 100644 --- a/docz/version.js +++ b/docz/version.js @@ -1,2 +1,2 @@ -const current = "0.19.2"; +const current = "0.19.3"; export default current;