support custom sheet and create headers
This commit is contained in:
@@ -24,21 +24,32 @@ function doPost(e) {
|
||||
sheet = ss.getActiveSheet();
|
||||
}
|
||||
|
||||
// 2. Get headers
|
||||
var lastCol = sheet.getLastColumn();
|
||||
var headers = [];
|
||||
|
||||
// 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];
|
||||
}
|
||||
|
||||
// 3. If sheet is empty, set headers from JSON keys
|
||||
if (headers.length === 0 || headers[0] === "") {
|
||||
headers = Object.keys(data);
|
||||
} 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";
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user