From dbbf62b793a4fe6c7d2511e6c5b887234fe64e9c Mon Sep 17 00:00:00 2001 From: Julian Freeman Date: Wed, 11 Mar 2026 13:01:18 -0400 Subject: [PATCH] support custom sheet and create headers --- google-script.js | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/google-script.js b/google-script.js index 38b606a..7f2ef39 100644 --- a/google-script.js +++ b/google-script.js @@ -24,21 +24,32 @@ function doPost(e) { sheet = ss.getActiveSheet(); } - // 2. Get headers - var lastCol = sheet.getLastColumn(); var headers = []; - if (lastCol > 0) { - headers = sheet.getRange(1, 1, 1, lastCol).getValues()[0]; - } - - // 3. If sheet is empty, set headers from JSON keys - if (headers.length === 0 || headers[0] === "") { - headers = Object.keys(data); + + // 2. If sheet is brand new (no rows), create headers first + if (sheet.getLastRow() === 0) { + // Extract keys from data, excluding 'sheetName' which is a control parameter + headers = Object.keys(data).filter(function(key) { + return key !== "sheetName"; + }); sheet.appendRow(headers); + } else { + // 3. If sheet already exists, get existing headers from the first row + var lastCol = sheet.getLastColumn(); + if (lastCol > 0) { + headers = sheet.getRange(1, 1, 1, lastCol).getValues()[0]; + } else { + // Fallback for edge cases where lastRow > 0 but lastCol is 0 + headers = Object.keys(data).filter(function(key) { + return key !== "sheetName"; + }); + sheet.appendRow(headers); + } } - // 4. Map data to headers + // 4. Map data to the determined headers var row = headers.map(function(header) { + // data[header] might be undefined for some rows if schema changes return data[header] !== undefined ? data[header] : "N/A"; });