This commit is contained in:
Julian Freeman
2026-03-11 13:21:34 -04:00
parent dbbf62b793
commit d50a9a1b86
2 changed files with 53 additions and 24 deletions

View File

@@ -26,31 +26,33 @@ function doPost(e) {
var headers = [];
// 2. If sheet is brand new (no rows), create headers first
// 2. Determine headers
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";
});
// Use provided headers if available
if (data.headers && Array.isArray(data.headers)) {
headers = data.headers;
} else {
// Fallback: Use keys but exclude internal control keys
headers = Object.keys(data).filter(function(key) {
return !["sheetName", "headers"].includes(key);
});
}
sheet.appendRow(headers);
} else {
// 3. If sheet already exists, get existing headers from the first row
// 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 the determined headers
// 3. Map data to 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";
var val = data[header];
if (val === undefined || val === null) return "N/A";
// If value is an object or array, stringify it to avoid [Ljava.lang.Object]
if (typeof val === 'object') return JSON.stringify(val);
return val;
});
sheet.appendRow(row);