From 53e60af0a355dfe130f58af179d6e1fba6f8b91d Mon Sep 17 00:00:00 2001 From: zstrike Date: Sun, 25 Jan 2026 15:11:49 -0500 Subject: [PATCH] initial commit --- .vscode/extensions.json | 5 ++++ main.gs | 58 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 .vscode/extensions.json create mode 100644 main.gs diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..ed5a342 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + "apenara.gas-intellisense" + ] +} \ No newline at end of file diff --git a/main.gs b/main.gs new file mode 100644 index 0000000..10ec51e --- /dev/null +++ b/main.gs @@ -0,0 +1,58 @@ +function doGet(e) { + var type = ""; + if (e.parameter.type) { + switch (String(e.parameter.type).toLowerCase()) { + case "json": + type = "json"; + break; + case "csv": + type = "csv"; + break; + default: + type = "csv"; + } + + } else { + type = "csv"; + } + + const sheet = SpreadsheetApp.openById("SPREADSHEET_ID") // <-- ID of spreadsheet to scrape + .getsheets()[0] + .getSheetValues(1, 1, sheet.getMaxRows(), sheet.getMaxColumns()); + + const colNames = data[0].filter((val) => val.toString().length > 0); + + const trimRegex = /,*$/; + const blankLineRegex = /^[\s\n\r]*/gm; + var csvRows = new Array(); + var jsonContent = { + "time": new Date(Date.now()).toISOString(), + "codes": [] + }; + + for (const row of sheet) { + if (type == "csv") { + csvRows.push(row.join(",").replace(trimRegex, "")); + } else { + if (row[1].toString().length > 0) { + var newObj = {}; + row.join().replace(trimRegex, "").split(",").forEach((val, i) => { + newObj[colNames[i]] = val.toString(); + }); + jsonContent.codes.push(newObj); + } + } + } + + const output = ContentService.createTextOutput(); + if (type == "csv") { + output.setContent(csvRows.join("\u000A").replace(blankLineRegex, "")); + output.setMimeType(ContentService.MimeType.CSV); + } else { + jsonContent.codes = jsonContent.codes.slice(1) + output.setContent(JSON.stringify(jsonContent)); + output.setMimeType(ContentService.MimeType.JSON); + } + + return output; +} \ No newline at end of file