步驟 1:建立 Google 試算表
1. 建立一個全新的空白 Google 試算表。
2. 在試算表下方的工作表頁籤中,分別建立以下 4 個分頁,請確保名稱完全一致:
ChargeLog
MaintenanceLog
ExpenseLog
StatusLog
步驟 2:貼上 Apps Script 同步代碼
1. 點擊上方選單「擴充功能」>「Apps Script」。
2. 刪除原有預設代碼,完整貼上以下程式碼:
function doPost(e) {
try {
var data = JSON.parse(e.postData.contents);
var ss = SpreadsheetApp.getActiveSpreadsheet();
if (data.action === 'sync') {
saveToSheet(ss, 'ChargeLog', data.chargeLog);
saveToSheet(ss, 'MaintenanceLog', data.maintenanceLog);
saveToSheet(ss, 'ExpenseLog', data.expenseLog);
saveToSheet(ss, 'StatusLog', data.statusLog);
return ContentService.createTextOutput(JSON.stringify({status: 'success'}))
.setMimeType(ContentService.MimeType.JSON);
} else if (data.action === 'restore') {
var result = {
ChargeLog: readSheet(ss, 'ChargeLog'),
MaintenanceLog: readSheet(ss, 'MaintenanceLog'),
ExpenseLog: readSheet(ss, 'ExpenseLog'),
StatusLog: readSheet(ss, 'StatusLog')
};
return ContentService.createTextOutput(JSON.stringify({status: 'success', data: result}))
.setMimeType(ContentService.MimeType.JSON);
}
} catch (f) {
return ContentService.createTextOutput(JSON.stringify({status: 'error', message: f.toString()})).setMimeType(ContentService.MimeType.JSON);
}
}
function saveToSheet(ss, sheetName, dataArray) {
var sheet = ss.getSheetByName(sheetName);
if (!sheet || !dataArray || dataArray.length === 0) return;
sheet.clear();
var headers = Object.keys(dataArray[0]);
sheet.appendRow(headers);
var rows = dataArray.map(obj => headers.map(key => {
var val = obj[key];
if (typeof val === 'object') return JSON.stringify(val);
return val;
}));
sheet.getRange(2, 1, rows.length, headers.length).setValues(rows);
}
function readSheet(ss, sheetName) {
var sheet = ss.getSheetByName(sheetName);
if (!sheet) return [];
var rows = sheet.getDataRange().getDisplayValues();
if (rows.length < 2) return [];
var headers = rows[0];
var data = [];
for (var i = 1; i < rows.length; i++) {
var obj = {};
for (var j = 0; j < headers.length; j++) {
var val = rows[i][j];
try {
if (typeof val === 'string' && (val.startsWith('[') || val.startsWith('{'))) {
val = JSON.parse(val);
}
} catch(e) {}
obj[headers[j]] = val;
}
data.push(obj);
}
return data;
}
步驟 3:部署 API
1. 點擊右上角「部署」>「新增部署作業」。
2. 部署類型選擇「網頁應用程式」。
3. 安全設定:
- 執行身分:選擇我 (您的 Google 帳戶信箱)
- 誰可以存取:務必選擇所有人 (Anyone)
4. 點擊部署,於授權對話框中點選「進階」>「前往... (不安全)」> 點選「允許」。
5. 複製部署成功後產生的網頁應用程式網址 (網址以 /exec 結尾)。
※ 重大提示:日後若修改 Google Sheets 代碼,請記得在「管理部署作業」點選鉛筆編輯,將版本選擇「新版本」並再次部署,如此修改才會正式生效。