主題:學生日程自動提醒系統
流程:
Google Calendar → n8n → Function(格式化訊息) → Email / Line Notify
今天的重點是「第一段」:
📡 收集資料(Google Calendar API 或 Webhook)
任務步驟 | 內容 | 成功標準 |
---|---|---|
1️⃣ 建立 Google Cloud OAuth 憑證 | 取得 Client ID & Client Secret | 成功在 n8n 驗證通過 |
2️⃣ 在 n8n 建立 Google Calendar Node | 連線 Calendar API | 能抓到當日事件 |
3️⃣ 驗證資料輸出 | 使用 “Execute Node” | 螢幕可看到 JSON 資料 |
4️⃣ 測試 Webhook 觸發 | 用瀏覽器或 Postman 測試 | webhook URL 成功執行 workflow |
5️⃣ Debug 與記錄心得 | 記下失敗原因與學到的重點 | 整理成心得報告 |
建立新專案,例如:n8n-reminder-system
。
左側選單 → API與服務 → 憑證 (Credentials)。
按「建立憑證」 → OAuth 2.0 用戶端 ID。
應用程式類型:網頁應用程式
名稱:n8n-oauth
已授權的重新導向 URI 填入:
http://localhost:5678/rest/oauth2-credential/callback
建立完成後會得到:
打開 n8n (http://localhost:5678)。
進入 Credentials → 新增 → Google Calendar OAuth2 API。
填入:
點「Connect My Account」,系統會跳出 Google 登入視窗,授權完成即成功。
✅ 驗證成功後,Credential 會顯示綠色勾勾。
新增節點 → 搜尋 “Google Calendar”。
Operation 選擇 Get All Events。
在 Calendar ID
欄位填入你的日曆 ID:
youremail@gmail.com
。設定時間範圍(用 Expression):
Time Min
: ={{ $moment().startOf('day').toISOString() }}
Time Max
: ={{ $moment().endOf('day').toISOString() }}
點「Execute Node」測試。
👉 如果成功,你會在右側看到:
{
"summary": "期中報告準備",
"start": {
"dateTime": "2025-10-27T09:00:00+08:00"
},
"end": {
"dateTime": "2025-10-27T10:00:00+08:00"
},
"description": "與同學討論報告方向"
}
如果你想在不等 Cron 的情況下測試 workflow:
在 workflow 開頭新增 Webhook Node。
設定:
/daily-reminder-test
儲存 workflow → 點上方 “Test”
打開瀏覽器輸入:
http://localhost:5678/webhook-test/daily-reminder-test
如果 workflow 被觸發,就能看到 Console log 與下一步節點執行。
問題 | 原因 | 解法 |
---|---|---|
❌ OAuth 無法連線 | Redirect URI 錯誤 | 必須與 Google Cloud 的 URI 完全一致 |
⚠️ 沒有抓到事件 | 時區不符 / 無事件 | 確認 calendar 有事件、時區設為 Asia/Taipei |
⚠️ n8n 無法執行 node | credentials 未綁定 | 點 node → Credentials → 選正確憑證 |
⚠️ JSON 顯示亂碼 | n8n UI 渲染問題 | 點右上角「JSON View」查看原始資料 |
⚠️ Webhook 無反應 | workflow 未啟用 | 點右上角「Activate」 |