const SPREADSHEET_ID = '1pPdm5kSd1MwGhDoWtbGfxoFZRn7jt7xXNQqRZri_Oc8';
const SHEET_NAME = 'Verkauf';
function doGet(e) {
const action = e.parameter.action || 'read';
const cb = e.parameter.callback || '';
let result;
try {
if (action === 'read') result = readData();
else if (action === 'write') result = writeData(JSON.parse(decodeURIComponent(e.parameter.entry)));
else if (action === 'delete') result = deleteData(e.parameter.id);
else result = { ok: false, error: 'Unknown action' };
} catch (err) {
result = { ok: false, error: err.toString() };
}
const json = JSON.stringify(result);
if (cb) return ContentService.createTextOutput(cb + '(' + json + ')').setMimeType(ContentService.MimeType.JAVASCRIPT);
return ContentService.createTextOutput(json).setMimeType(ContentService.MimeType.JSON);
}
function readData() {
const ss = SpreadsheetApp.openById(SPREADSHEET_ID);
let sheet = ss.getSheetByName(SHEET_NAME);
if (!sheet) {
sheet = ss.insertSheet(SHEET_NAME);
sheet.appendRow(['id','art','paid','addr','track','boxes','channel','who','sent','note','ts']);
return { ok: true, data: [] };
}
const data = sheet.getDataRange().getValues();
if (data.length < 2) return { ok: true, data: [] };
const headers = data[0];
return { ok: true, data: data.slice(1).map(r => { const o = {}; headers.forEach((h,i) => o[h]=r[i]); return o; }) };
}
function writeData(entry) {
const ss = SpreadsheetApp.openById(SPREADSHEET_ID);
let sheet = ss.getSheetByName(SHEET_NAME);
if (!sheet) { sheet = ss.insertSheet(SHEET_NAME); sheet.appendRow(['id','art','paid','addr','track','boxes','channel','who','sent','note','ts']); }
const data = sheet.getDataRange().getValues();
const headers = data[0]; const idCol = headers.indexOf('id'); let found = false;
for (let i = 1; i < data.length; i++) {
if (String(data[i][idCol]) === String(entry.id)) {
headers.forEach((h,j) => sheet.getRange(i+1,j+1).setValue(entry[h]!==undefined?entry[h]:''));
found = true; break;
}
}
if (!found) sheet.appendRow(headers.map(h => entry[h]!==undefined?entry[h]:''));
return { ok: true };
}
function deleteData(id) {
const ss = SpreadsheetApp.openById(SPREADSHEET_ID);
const sheet = ss.getSheetByName(SHEET_NAME); if (!sheet) return { ok: true };
const data = sheet.getDataRange().getValues(); const idCol = data[0].indexOf('id');
for (let i = 1; i < data.length; i++) { if (String(data[i][idCol]) === String(id)) { sheet.deleteRow(i+1); break; } }
return { ok: true };
}