// Google Apps Script - ダイエットトラッカー連携
function doPost(e) {
try {
const data = JSON.parse(e.postData.contents);
const ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getSheetByName('記録データ');
if (!sheet) {
sheet = ss.insertSheet('記録データ');
sheet.appendRow(['日付', '体重', 'スコア', 'チェック1', 'チェック2', 'チェック3', 'チェック4', 'チェック5', '更新日時']);
}
if (data.action === 'sync') {
if (sheet.getLastRow() > 1) {
sheet.getRange(2, 1, sheet.getLastRow() - 1, 9).clear();
}
const records = data.records;
const rows = Object.keys(records).sort().map(date => {
const r = records[date];
return [r.date, r.weight || '', r.score,
r.checks[0] ? 1 : 0, r.checks[1] ? 1 : 0,
r.checks[2] ? 1 : 0, r.checks[3] ? 1 : 0,
r.checks[4] ? 1 : 0, r.updatedAt];
});
if (rows.length > 0) {
sheet.getRange(2, 1, rows.length, 9).setValues(rows);
}
return ContentService.createTextOutput(JSON.stringify({
success: true, message: rows.length + '件のデータを同期しました'
})).setMimeType(ContentService.MimeType.JSON);
}
if (data.action === 'add') {
const r = data.record;
sheet.appendRow([r.date, r.weight || '', r.score,
r.checks[0] ? 1 : 0, r.checks[1] ? 1 : 0,
r.checks[2] ? 1 : 0, r.checks[3] ? 1 : 0,
r.checks[4] ? 1 : 0, r.updatedAt]);
return ContentService.createTextOutput(JSON.stringify({
success: true, message: 'データを追加しました'
})).setMimeType(ContentService.MimeType.JSON);
}
} catch (error) {
return ContentService.createTextOutput(JSON.stringify({
success: false, message: error.toString()
})).setMimeType(ContentService.MimeType.JSON);
}
}
function doGet(e) {
return ContentService.createTextOutput(JSON.stringify({
success: true, message: '接続OK'
})).setMimeType(ContentService.MimeType.JSON);
}