support custom sheet
This commit is contained in:
@@ -11,24 +11,40 @@
|
||||
function doPost(e) {
|
||||
try {
|
||||
var data = JSON.parse(e.postData.contents);
|
||||
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
|
||||
var ss = SpreadsheetApp.getActiveSpreadsheet();
|
||||
var sheet;
|
||||
|
||||
// 1. Get or Create the target sheet
|
||||
if (data.sheetName) {
|
||||
sheet = ss.getSheetByName(data.sheetName);
|
||||
if (!sheet) {
|
||||
sheet = ss.insertSheet(data.sheetName);
|
||||
}
|
||||
} else {
|
||||
sheet = ss.getActiveSheet();
|
||||
}
|
||||
|
||||
// Get headers
|
||||
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
|
||||
if (headers[0] === "" && sheet.getLastColumn() === 1) {
|
||||
// New sheet, set headers from JSON keys
|
||||
// 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);
|
||||
sheet.appendRow(headers);
|
||||
}
|
||||
|
||||
// Map data to headers
|
||||
// 4. Map data to headers
|
||||
var row = headers.map(function(header) {
|
||||
return data[header] || "N/A";
|
||||
return data[header] !== undefined ? data[header] : "N/A";
|
||||
});
|
||||
|
||||
sheet.appendRow(row);
|
||||
|
||||
return ContentService.createTextOutput(JSON.stringify({ status: "success" }))
|
||||
return ContentService.createTextOutput(JSON.stringify({ status: "success", sheet: sheet.getName() }))
|
||||
.setMimeType(ContentService.MimeType.JSON);
|
||||
|
||||
} catch (error) {
|
||||
@@ -37,7 +53,6 @@ function doPost(e) {
|
||||
}
|
||||
}
|
||||
|
||||
// Handle preflight (for some environments, though 'no-cors' usually avoids this)
|
||||
function doOptions(e) {
|
||||
return ContentService.createTextOutput("")
|
||||
.setMimeType(ContentService.MimeType.TEXT);
|
||||
|
||||
Reference in New Issue
Block a user