1. 為什麼要使用 Google 試算表當作資料庫?
在初期建置系統時,比起租用與維護傳統關聯式資料庫 (如 MySQL),Google 試算表不僅完全免費,而且具備直覺的圖形化介面。客服人員可以直接打開試算表查看最新的客訴紀錄,甚至利用內建的篩選、圖表功能來進行簡單的客情分析,是輕量級專案的最佳選擇。
2. 準備你的 Google 試算表
- 首先,在你的 Google 雲端硬碟建立一個新的試算表。
- 在第一列建立標題:例如 A1 填入「時間」、B1 填入「使用者 ID」、C1 填入「訊息內容」。
- 從網址列複製這份試算表的 ID(即
/d/與/edit之間的那長串英數混合字元),我們等一下會在程式碼中用到它。
3. 修改 GAS 程式碼實作資料寫入
我們將上一篇的程式碼稍微擴充,使用 GAS 內建的 SpreadsheetApp 服務。當收到 LINE 的 Webhook 請求時,除了回覆訊息,同步將資料寫入試算表的最底端。
✏️ 結合資料庫紀錄的完整實作範例
function doPost(e) {
// 1. 基本設定
var channelToken = "你的_LINE_CHANNEL_ACCESS_TOKEN";
var sheetId = "你的_GOOGLE_SHEET_ID"; // 貼上剛剛複製的試算表 ID
// 2. 解析 LINE 傳來的訊息
var msg = JSON.parse(e.postData.contents);
var replyToken = msg.events[0].replyToken;
var userId = msg.events[0].source.userId;
var userMessage = msg.events[0].message.text;
// 取得現在時間並格式化
var currentTime = Utilities.formatDate(new Date(), "Asia/Taipei", "yyyy-MM-dd HH:mm:ss");
// 3. 將資料寫入 Google 試算表
var sheet = SpreadsheetApp.openById(sheetId).getSheets()[0]; // 取得第一個工作表
sheet.appendRow([currentTime, userId, userMessage]); // 依序寫入 A, B, C 欄位
// 4. 回覆使用者訊息
var url = "https://api.line.me/v2/bot/message/reply";
var options = {
"method": "post",
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer " + channelToken
},
"payload": JSON.stringify({
"replyToken": replyToken,
"messages": [{
"type": "text",
"text": "我們已收到您的訊息,客服人員將盡快處理!"
}]
})
};
// 執行回覆
UrlFetchApp.fetch(url, options);
}
將這段程式碼部署後,你的 LINE 官方帳號不僅會自動回覆「我們已收到您的訊息...」,同時也會安靜地在後台把每一筆客人的發言連同時間戳記,整齊地排列在 Google 試算表裡。透過這個簡單的機制,你就完成了一個具備資料持久化能力的客服自動化雛形!

沒有留言:
張貼留言