Last active
October 27, 2025 05:23
-
-
Save supermamon/5080a599f3719541cb48b3c3ab4e1502 to your computer and use it in GitHub Desktop.
Revisions
-
supermamon revised this gist
Jun 5, 2021 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -49,7 +49,7 @@ curl -X POST -d '{"data":[1,4,7]}' 'https://script.google.com/.../exec?sheet=She # ouput: {"success":true} ``` Example Shortcut: https://lynks.cc/gsdemoshortcut */ const SPREADSHEET_ID = 'paste-id-here' -
supermamon created this gist
Jun 5, 2021 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,114 @@ /* How to setup ============ 1. Go to https://script.google.com and login 2. Click New Project 3. Give the project a name be clicking on "Untitled Project" and giving a new name 4. Copy this whole code and overwrite everything on Code.gs file. Click on the Save icon to save. 5. Go to Google drive and open the worksheet that you want to manipulate 6. Take a look at the url. It should be in this format -- https://docs.google.com/spreadsheets/d/spreadheet-id-as-some-long-seemingly-random-characters/edit#gid=478439860 7. Copy the spreadsheet id from the url, the characters between `/spreadsheets/d/` and `/edit/` 8. Paste the spreadsheet id on the `const SPREADSHEET_ID = 'paste-id-here' 9. Click on the dropdown above (beside the Debug button) and choose authenticate, then click Run 10. A popup window will appear saying `Authorization Required`. Click `Review Permissions` 11. Choose an account you wish to use for this project 12. You're likely to get a prompt saying `Google hasn’t verified this app`. Click `Advanced` then click `Go to your-project-name (unsafe)` 13. Another prompt saying `your-project-name to access your Google Account`. Click Allow 14. This script should now be able to read and write to your spreadsheet 15. To give external tools (Shortcuts, Scriptable, curl, etc) access click Deploy > New Deployment 16. Click `Select Type > Web App` 17. Fill in the fields Description: Execute As: choose you account Who has access: Anyone // you need to choos anyone here, otherwise it won't work 18. Click Deploy 19. Copy the Web App url. This will be the url that will act as the API endpoint for the external tools. How to use ========== Examples below are using `curl`. This shouldn't be difficult to port over to Shortcuts using `Get Contents of URL` or to Scriptable using the Request class. Each call will return JSON with a "success" key indicating if the operation was successfull or not. ## read the values from A1:B3 on the first wheet ``` curl -L `https://script.google.com/.../exec?range=A1:B2` # ouput: {"success":true, "values": [["Col1","Col2"],[1,2]] } ``` ## read the values from A1:B3 from Sheet2 ``` curl -L `https://script.google.com/.../exec?range=Sheet2!A1:B2` # ouput: {"success":true, "values": [["Col1","Col2"],[1,2]] } ``` ## append a row on 3 columns on Sheet2 ``` curl -X POST -d '{"data":[1,4,7]}' 'https://script.google.com/.../exec?sheet=Sheet2' # ouput: {"success":true} ``` */ const SPREADSHEET_ID = 'paste-id-here' function authenticate() { SpreadsheetApp.openById(SPREADSHEET_ID) } // doGet and doPost are special functions by Google Apps Script. // This are called automatically when the script is deployed as a Web App. function doGet(request) { try { const ws = SpreadsheetApp.openById(SPREADSHEET_ID) const range = request.parameter.range const values = ws.getRange(range).getValues() var retVal = { success: true, values: values } } catch(e) { var retVal = { succes: false, error: e.message } } // return in JSON format return ContentService.createTextOutput(JSON.stringify(retVal)).setMimeType(ContentService.MimeType.JSON) } function doPost(request) { try { const ws = SpreadsheetApp.openById(SPREADSHEET_ID) const sheetName = request.parameter.sheet /* get the posted data. can be anything but assume that it's in a json format this expects the body to be in the format { "data": [4,5,6] } where 4, 5, and 6 are column values */ const body = JSON.parse(request.postData.contents) const sheet = ws.getSheetByName(sheetName) sheet.appendRow(body.data) var retVal = { succes: true } } catch (e) { var retVal = { succes: false, error: e.message } } return ContentService.createTextOutput(JSON.stringify(retVal)).setMimeType(ContentService.MimeType.JSON) } // @supermamon