經過前面幾篇的實作,我們的 LINE 機器人已經具備了精美的卡片選單與 AI 對話能力。今天,我們要來挑戰一個非常實用的商業應用場景:自動化預約系統。透過 Google Apps Script (GAS) 強大的生態系,我們可以讓 LINE 機器人直接與 Google Calendar (日曆) 連動,讓客戶或學生在 LINE 上輸入時間,系統自動幫你把行程登記到行事曆上!
1. 預約系統的運作流程
我們將設計一個簡單的指令格式,例如使用者輸入:預約 2026-10-30 14:00 專案諮詢。後端程式會擷取這段文字中的時間與事項,接著呼叫 Google Calendar 服務建立行程,最後回報預約成功的訊息給使用者。
▲ LINE 整合 Google Calendar 系統資料流
2. 取得 Google 日曆 ID
為了讓 GAS 知道要把行程寫在哪個日曆中,我們需要先取得 日曆 ID:
- 打開網頁版 Google 日曆,在左側找到你想用來接收預約的日曆。
- 點擊該日曆旁邊的「⋮」選擇「設定和共用」。
- 向下滑動到「整合日曆」區塊,複製 日曆 ID(通常是你的 Gmail 地址,或是一串
@group.calendar.google.com結尾的字串)。
3. 修改 GAS 程式碼處理預約邏輯
接下來,我們在 doPost 中加入字串解析邏輯,並使用 CalendarApp 服務來建立行程。為求簡化,我們假設預約時間預設為 1 小時。
✏️ 自動寫入行事曆實作範例
function doPost(e) {
var channelToken = "你的_LINE_CHANNEL_ACCESS_TOKEN";
var msg = JSON.parse(e.postData.contents);
var replyToken = msg.events[0].replyToken;
var userMessage = msg.events[0].message.text.trim();
var replyText = "";
// 判斷是否為「預約」指令 (格式:預約 YYYY-MM-DD HH:mm 預約事項)
if (userMessage.startsWith("預約")) {
replyText = createCalendarEvent(userMessage);
} else {
replyText = "若要預約諮詢,請輸入格式:\n「預約 2026-10-30 14:00 專案討論」";
}
// 回傳訊息給 LINE
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": replyText }]
})
};
UrlFetchApp.fetch(url, options);
}
// === 建立 Google Calendar 行程函式 ===
function createCalendarEvent(message) {
try {
var calendarId = "你的_日曆_ID";
var cal = CalendarApp.getCalendarById(calendarId);
// 切割字串:["預約", "2026-10-30", "14:00", "專案討論"]
var parts = message.split(" ");
if (parts.length < 4) {
return "格式錯誤 ❌\n請確保指令包含日期、時間與事項,中間以半形空白分隔。";
}
var datePart = parts[1]; // 2026-10-30
var timePart = parts[2]; // 14:00
var title = "LINE預約:" + parts[3];
// 組合起始時間
var startTimeString = datePart + "T" + timePart + ":00";
var startTime = new Date(startTimeString);
// 預設行程長度為 1 小時
var endTime = new Date(startTime.getTime() + (60 * 60 * 1000));
// 寫入 Google Calendar
cal.createEvent(title, startTime, endTime);
return "預約成功!✅\n已為您登記行程:" + title + "\n時間:" + datePart + " " + timePart;
} catch (err) {
return "預約失敗,請確認您的時間格式是否正確 (YYYY-MM-DD HH:mm)。";
}
}
4. 測試與應用場景
儲存並重新部署後,在 LINE 視窗中輸入:預約 2026-11-01 10:00 系統開發諮詢,幾秒後你就會在自己的 Google 日曆上看到這個行程完美出現!這個功能不僅可以結合在工作室的接案流程中,也可以作為你在學校管理與學生面談時間的絕佳工具。

沒有留言:
張貼留言