iT邦幫忙

2025 iThome 鐵人賽

DAY 12
0
AI & Data

【潛水課程 x SaaS】打造 AI 自動化 CRM 系統系列 第 12

【Day 12】為什麼課程行事曆自動化如此重要|LINE Bot × Google Calendar

  • 分享至 

  • xImage
  •  

在體驗課程管理中,「課程行程管理」往往是教練和管理者最耗時的工作之一。

以潛水課程為例,每週可能有多堂課程,每位學員的報名時間、課程類型、付款狀態都不同。
如果依賴人工建立行事曆,容易出現以下問題:

  • 手動建立事件耗時:每天要確認哪些學員報名、建立行程事件、發送提醒。
  • 課程衝突或遺漏提醒:多堂課程重疊或忘記提醒某位學員,影響出席率與體驗。
  • 資料分散:報名資料、行程資訊分散在 LINE、Google Form、表單、私訊,難以集中管理。

這些問題不只浪費教練時間,也容易造成學員體驗下降

本篇將示範如何利用n8n 自動化流程 + Google Calendar + LINE Bot
將報名資料自動建立成課程行事曆事件,並自動提醒學員。
透過行事曆自動化,不僅集中管理課程行程,
也能與 CRM 系統整合,後續課程回饋與行銷分眾更方便。


核心概念:行事曆自動化的價值與思路

1. 為什麼要自動建立行事曆事件?

  • 節省行政時間:教練不需再手動建立 Google Calendar 事件或發送提醒。
  • 集中管理課程行程:所有課程、學員、時間與地點資訊統一管理,避免衝突。
  • 提升學員體驗:自動提醒學員上課時間與集合資訊,出席率提高。
  • 資料可整合 CRM:課程資料、出席狀況與回饋問卷可自動進入 CRM,利於後續分析與行銷。

2. 流程自動化思路

完整流程可分為四個核心節點:

  • 報名:學員透過 LINE Bot 或 Google Form 填寫報名資訊(姓名、課程、日期、付款方式)。
  • 資料集中管理:n8n 監聽表單提交,將資料寫入 Google Sheet,建立報名名單庫。
  • 行事曆事件自動建立:n8n 將資料傳到 Google Calendar,自動建立課程事件。
  • 課前提醒:LINE Bot 自動發送課前通知,附上集合地點、攜帶物品與時間。

3. 工具簡介

工具 功能
LINE Bot / Flex Message 報名入口、課前提醒、自動通知學員
Google Form 收集報名資料
Google Sheet 集中管理報名名單與付款狀態
Google Calendar 集中管理課程行程、自動提醒
n8n 自動化流程樞紐,將報名資料自動寫入 Sheet、建立 Calendar、觸發 LINE Bot

案例示範:潛水課程自動化行事曆管理

情境設定

潛水教練小明每週管理 3 堂潛水課程,每堂課約 5–10 名學員。傳統作法是:

  • 學員報名後,小明需手動建立 Google Calendar 事件
  • 再手動發送 LINE 訊息提醒
  • 課程前一天確認學員是否已付款

問題:耗時易出錯資料分散

自動化流程示範

  1. 學員報名

    • 點選 LINE 官方帳號 → 選擇「我要報名」 → 填寫 LINE 表單或 Google Form
  2. 資料自動整理

    • n8n 監聽表單提交 → 將報名資料寫入 Google Sheet
  3. 自動建立 Google Calendar 事件

    • n8n 讀取報名資料 → 建立課程事件
    • 事件標題:課程名稱 + 學員姓名
    • 說明:集合地點、攜帶物品
    • 時間:學員報名選擇的課程日期
  4. 課前自動提醒

    • LINE Bot 自動發送課前提醒
    • 課前一天提醒:集合地點、攜帶物品
    • 課程當日提醒:時間與集合提醒

成效

  • 每週節省約2–3 小時行政時間
  • 避免「漏通知」「課程衝突」
  • 學員體驗提升 → 出席率提高
  • 方便後續整合 CRM,做課後回饋與行銷分眾

流程圖
圖1:流程圖

LINE Flex Message 「加入行事曆」按鈕
圖2:LINE Flex Message 「加入行事曆」按鈕

Google Calendar 自動建立事件
圖3:Google Calendar 自動建立事件


小教學:從報名到行事曆自動化的操作示範

1. n8n 流程設定

節點設計
A. Webhook 監聽 LINE 表單提交

  • URL 接收表單資料,觸發 n8n 流程

B. Google Sheet

  • 寫入報名資料,包括姓名、課程、日期、付款狀態

C. Google Calendar

  • 建立事件:
    • Title:課程名稱 + 學員姓名
    • Date & Time:報名表單選擇的課程時間
    • Description:集合地點、攜帶物品

D. LINE Bot

  • 發送 Flex Message 提醒學員
  • 按鈕設計:「加入行事曆」
  • 範例(n8n Google Calendar 節點)
{
  "resource": "event",
  "operation": "create",
  "calendarId": "primary",
  "summary": "潛水課程 - {{ $json.name }}",
  "description": "集合地點:XX碼頭\n攜帶物品:潛水裝備",
  "start": {
    "dateTime": "{{ $json.courseDate }}T09:00:00",
    "timeZone": "Asia/Taipei"
  },
  "end": {
    "dateTime": "{{ $json.courseDate }}T12:00:00",
    "timeZone": "Asia/Taipei"
  }
}

2. LINE Flex Message 設計建議

  • 文字區塊:課程名稱、時間、集合地點、攜帶物品
  • 按鈕區塊:加入 Google Calendar(URL Scheme)
  • 範例:
{
  "type": "button",
  "action": {
    "type": "uri",
    "label": "加入行事曆",
    "uri": "https://www.google.com/calendar/render?action=TEMPLATE&text=潛水課程-小明&dates=20250919T090000/20250919T120000&details=攜帶物品:潛水裝備"
  }
}

3. 備用方案

  • 如果不使用 LINE Flex Message,也可直接透過 Google Form → n8n → Google Calendar → Email 發送課前提醒

練習 / 小遊戲

1. 畫出你的課程行事曆

  • 將你管理的課程畫在行事曆上,標註需要自動提醒的節點
  • 想想哪些資料可以自動帶入 Calendar(姓名、課程、時間)

設計一則課程提醒 Flex Message

  • 編寫文字:課程名稱、時間、集合地點、攜帶物品
  • 設計按鈕:「加入行事曆」

挑戰:多人報名

  • 如果同一堂課有多人報名,如何在 Calendar 建立事件並自動提醒每位學員?
  • 思考資料結構:每個學員建立單獨事件或群組事件

表1:課程行事曆

timestamp name course date lineId paid
2025/09/20 10:15:00 小明 進階潛水課程 2025-09-27 U123456 Y
2025/09/20 11:30:00 小美 體驗潛水 2025-10-01 U987654 N
2025/09/21 9:50:00 阿華 水肺證照課程 2025-10-02 U888888 N
2025/09/21 10:20:00 Lily 體驗潛水 2025-10-03 U777777 N
2025/09/21 11:00:00 Jack 進階潛水課程 2025-10-04 U666666 N
2025/09/22 14:10:00 小強 體驗潛水 2025-10-05 U555555 N
2025/09/22 15:45:00 May 水肺證照課程 2025-10-06 U444444 N
2025/09/23 9:20:00 Andy 體驗潛水 2025-10-06 U333333 N
2025/09/23 10:40:00 Tina 進階潛水課程 2025-10-07 U222222 N
2025/09/24 13:30:00 Oscar 體驗潛水 2025-10-08 U111111 N

code節點:產生 Google Calendar URI 並傳遞課程資料

// 原始值
const courseName = $input.first().json.course; // 課程名稱
const studentName = $input.first().json.name;  // 姓名
const details = '攜帶物品:裝備、防曬、毛巾';
const date_ = $input.first().json.date;        // 上課日期
const dateStart = $input.first().json.date.replace(/-/g,'') + 'T000000';
const dateEnd = $input.first().json.date.replace(/-/g,'') + 'T235900';
const paid = $input.first().json.paid;         // 已付款 Y/N

// 只對 URI 中使用的值做 encode
const uri = `https://calendar.google.com/calendar/render?action=TEMPLATE&text=${encodeURIComponent(courseName)}(${encodeURIComponent(studentName)})&details=${encodeURIComponent(details)}&dates=${dateStart}/${dateEnd}`;

return [
  {
    json: {
      uri,
      courseName,
      studentName,
      details,
      dateStart,
      dateEnd,
      paid,
      date_
    }
  }
];

說明:

  • 從輸入資料取得課程名稱、學員姓名、上課日期及付款狀態
  • 將課程資料保留原始值 (courseName, studentName, details, date_, paid)
  • 生成可直接點擊加入 Google Calendar 的 URI (uri)
  • URI 只對課程名稱、學員姓名及細節文字做 encodeURIComponent
  • 回傳 JSON 供後續節點使用(如 LINE Flex Message 推播或日曆自動建立)

Flex Message 排版語法範例

{
  "to": "USER_LINE_ID",
  "messages": [
    {
      "type": "flex",
      "altText": "上課提醒通知",
      "contents": {
        "type": "bubble",
        "body": {
          "type": "box",
          "layout": "vertical",
          "contents": [
            {
              "type": "text",
              "text": "{{ $json.courseName }}",
              "weight": "bold",
              "size": "xl"
            },
            {
              "type": "text",
              "text": "{{ '日期:' + $json.date_ }}",
              "wrap": true,
              "margin": "md"
            },
            {
              "type": "text",
              "text": "集合地點:OO港",
              "wrap": true,
              "margin": "md"
            },
            {
              "type": "text",
              "text": "攜帶物品:裝備、防曬、毛巾",
              "wrap": true,
              "margin": "md"
            },
            {
              "type": "button",
              "style": "primary",
              "action": {
                "type": "uri",
                "label": "加入行事曆",
                "uri": "{{ $json.uri }}"
              },
              "margin": "lg"
            }
          ]
        }
      }
    }
  ]
}

小結

透過課程行事曆自動化,你可以:

  • 節省每週數小時行政時間
  • 避免遺漏提醒或課程衝突
  • 提升學員體驗與出席率
  • 為 CRM 系統收集完整資料,方便課後回饋與行銷分眾

【我的小murmur】
明天預告:Day 13 我們將介紹課後回饋與 CRM 紀錄
示範如何將課後問卷與資料自動整合到 CRM,提高學員滿意度與再報名率。

今天開始設計你的課程行事曆自動化流程,把繁瑣的行政工作交給自動化,專注在自己能產出的價值上吧!

【秘密小樹洞】
想偷偷告訴我你最頭痛的工作流程、AI、自動化問題嗎?
點這個小樹洞分享,我會給你免費資源或可實作解法
樹洞問卷


上一篇
【Day 11】自動寄送課前通知與提醒|LINE Bot x Google Calendar
下一篇
【Day 13】課後回饋管理術|節省時間 x 提升學員體驗
系列文
【潛水課程 x SaaS】打造 AI 自動化 CRM 系統13
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言