File size: 1,764 Bytes
7630609 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | // Google Apps Script — paste this into Extensions > Apps Script in your Google Sheet.
// Deploy as: Web App → Execute as Me → Anyone can access.
//
// The sheet must have headers in row 1: name | author | timestamp | data_json
function doPost(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = JSON.parse(e.postData.contents);
if (data.action === "save") {
// Check if scenario already exists (update in place)
var names = sheet.getRange("A:A").getValues();
var rowIndex = -1;
for (var i = 1; i < names.length; i++) {
if (names[i][0] === data.name) {
rowIndex = i + 1; // 1-indexed
break;
}
}
var row = [data.name, data.author, data.timestamp, data.data_json];
if (rowIndex > 0) {
sheet.getRange(rowIndex, 1, 1, 4).setValues([row]);
} else {
sheet.appendRow(row);
}
return ContentService.createTextOutput(JSON.stringify({status: "ok"}))
.setMimeType(ContentService.MimeType.JSON);
} else if (data.action === "delete") {
var names = sheet.getRange("A:A").getValues();
for (var i = 1; i < names.length; i++) {
if (names[i][0] === data.name) {
sheet.deleteRow(i + 1);
break;
}
}
return ContentService.createTextOutput(JSON.stringify({status: "ok"}))
.setMimeType(ContentService.MimeType.JSON);
}
return ContentService.createTextOutput(JSON.stringify({status: "error", message: "Unknown action"}))
.setMimeType(ContentService.MimeType.JSON);
}
// Required for Apps Script web app — handles GET requests with a simple status page
function doGet(e) {
return ContentService.createTextOutput("SalesComp API is running.")
.setMimeType(ContentService.MimeType.TEXT);
}
|