精華筆記

· @aihub.tw

Google 全家桶自動化

綜合實戰:個人文件自動化中樞

綜合實戰:個人文件自動化中樞

前五課做完,你手上有五條流程在跑:Drive 新檔案自動歸位、Gmail 每天早上自動摘要、Sheets 表單進來報表自己長好、會議前自動備料會議後自動記錄。每一條流程都好用,但它們彼此之間沒有連通——你的 Drive、Gmail、日曆各走各的,每週底要整理一週工作進度時,你還是要手動開四個分頁、各自確認一遍。

「自動化」真正值錢的不是每條流程各自省幾分鐘,是讓整個資訊流從進入、處理、到彙整都不需要你盯著。這堂課就是要把它做完:建一個個人文件自動化中樞,把前五課串成一個有入口、有出口的完整系統,最後用一份每週自動送到你信箱的週報作為整個循環的收尾。

這堂課適合誰 適合:已完成前五課、手上有五條 n8n 流程在跑、想把它們整合成一個真正省事系統的上班族/自由工作者(本課程屬進階應用專區)。需要基礎:Google 帳號 + n8n 基礎操作 + 前五課各自完成。前置課:第 1–5 課。

這堂學什麼

  • 系統架構設計:五課流程如何串成一個有入口有出口的中樞
  • 每週自動週報:Schedule Trigger → 多源資料彙整 → AI 摘要 → Gmail 寄出,全程無人值守
  • n8n 執行紀錄除錯:流程壞了怎麼在 Executions 頁找到問題節點,四步驟搞定
  • 成本總估算:整套系統跑起來每月花多少(有你意想不到的答案)
  • 常見坑大全整理:六個最容易讓系統靜悄悄停止運作的問題
  • 下一步:AI Agent 課與 MCP 課能再幫你省什麼

系統架構:五課合一

先退後一步看整個系統的樣子。

個人文件自動化中樞:五課整合架構

四個 Google 服務是系統的「收件入口」:Gmail 收信、Drive 收檔、Sheets/Forms 收表單回應、日曆/Meet 收會議。每個入口各自有一個 Trigger 流程(前五課分別建好的)。這些資料流統統進入 n8n 的 AI 分類引擎:判斷這筆資料要做什麼,接著執行對應動作(歸檔、貼標、更新報表、生會議記錄)。每個動作執行完,結果都匯到一個地方:每週一早上的自動週報。

這個架構的核心概念是單向資料流:資料只往一個方向走,不同流程之間不互相呼叫,只透過共同的 Google Sheets「事件紀錄表」溝通——這樣就算某一條流程壞掉,其他條不受影響。

觀念:Google Workspace Studio vs n8n

在開始串流程之前,先說清楚一件事。2025 年底 Google 發表了 Workspace Studio,並於 2026 年 3 月起對一般使用者陸續開放,讓 Business 以上方案的用戶可以用自然語言(背後是 Gemini 3),建立跨 Gmail、Drive、Sheets 的 AI 自動化代理。很多人看到之後問:「這樣我還需要 n8n 嗎?」

Google Workspace Studio vs n8n:2026 功能對照

簡單說:Workspace Studio 適合純在 Google 生態內、快速試用的情境;n8n 的核心優勢是跨平台、完全自訂 Prompt、400+ 整合,以及你可以完整看到每一筆執行紀錄來除錯。這堂課學的是後者——不是因為它比較厲害,是因為它對「跨服務、生產級、要長期穩定運作」的自動化需求來說才是對的工具。

如果你的 Workspace 方案已含 Workspace Studio,可以用它快速試做小流程;要做本課整合系統,繼續跟 n8n 走。

手把手實戰

這堂課的主要實作是:建一條「每週自動週報」流程,把前五課各條流程的產出彙整成一封信,每週一早上 08:00 寄給你自己。

建立共用的「事件紀錄表」

系統整合的黏合劑是一張 Google Sheets 表格,專門記錄「這一週各流程的動作」。前五課的每條流程,在完成動作後都往這張表寫一行紀錄,週報流程再來讀這張表彙整。

在你的 Google Sheets 建一個新工作表,命名為「自動化事件紀錄」,欄位如下:

A: 時間戳記     (自動填入)
B: 來源         (gmail / drive / sheets / calendar)
C: 事件類型     (新信件 / 歸檔 / 新表單 / 新會議記錄)
D: 摘要         (一句話描述這個事件)
E: 連結         (選填,可以是信件連結或檔案連結)

記下這張表的 Spreadsheet ID(從 URL 裡取:.../spreadsheets/d/這一段/...)。接下來每條流程的最後都要加一個「Sheets Append Row」節點,把事件寫進來。

在現有流程末尾加上「寫入紀錄」節點

打開你第 2 課的 Drive 歸檔流程。在 Move + Rename 節點執行完之後,加一個 Google Sheets 節點,Operation 選「Append or Update Row」:

  • Spreadsheet:選剛剛建的「自動化事件紀錄」
  • Sheet:Sheet1
  • Columns to Match On:留空(每次都是新增一行)
  • Fields to Send:
時間戳記:  {{ $now.toISO() }}
來源:       drive
事件類型:  歸檔
摘要:       {{ $json.newName }} 已歸入 {{ $json.category }}
連結:       https://drive.google.com/file/d/{{ $json.fileId }}

其他四課的流程同樣在最後加這個節點,來源和摘要的內容對應調整:

  • Gmail 摘要流程:來源 gmail、摘要「今日處理 X 封重要信件」
  • Sheets 流程:來源 sheets、摘要「收到新表單回應:{{ $json.姓名 }}」
  • 日曆流程:來源 calendar、摘要「會議記錄已建立:{{ $json.title }}」

這樣做完,這張表就是整個系統的「黑盒子飛行紀錄器」:任何時候你想知道系統這週做了什麼,打開這張表看一眼就好,不用一條一條流程去追。

建每週自動週報流程

建一個全新的 Workflow,命名「每週自動週報」。

每週自動週報:n8n 工作流程設計

節點一:Schedule Trigger

新增 Schedule Trigger 節點:

  • Trigger Interval:選 Week
  • Trigger at Day of Week:選 Monday
  • Trigger at Hour:8
  • Trigger at Minute:0

這等同於 Cron 表達式 0 8 * * 1——每週一早上 08:00 觸發。

節點二:抓取本週事件紀錄

加一個 Google Sheets 節點,Operation 選「Get Rows」:

  • Spreadsheet 選「自動化事件紀錄」
  • Filters:設條件「時間戳記 >= 上週一的日期」

用 n8n 的 expression 算出上週一的日期:

{{ $now.minus({days: 7}).startOf('week').toISO() }}

這樣每次執行只會抓過去 7 天的記錄,不會把以前的資料也拉進來。

節點三:統計各來源數量

加一個 Code 節點(JavaScript),把資料彙整成統計:

const rows = $input.all().map(i => i.json);

const counts = { gmail: 0, drive: 0, sheets: 0, calendar: 0 };
rows.forEach(r => {
  const src = (r['來源'] || '').toLowerCase();
  if (counts[src] !== undefined) counts[src]++;
});

const events = rows.map(r => `• [${r['來源']}] ${r['摘要']}`).join('\n');

return [{
  json: {
    totalEvents: rows.length,
    gmailCount:    counts.gmail,
    driveCount:    counts.drive,
    sheetsCount:   counts.sheets,
    calendarCount: counts.calendar,
    eventList:     events,
    weekLabel:     $now.toFormat("yyyy 第 WW 週"),
  }
}];

節點四:AI 摘要

加一個 Basic LLM Chain 節點(模型選 GPT-4o mini 或 Claude Haiku 成本最低),System Prompt:

你是個人效率助手。根據提供的一週工作事件清單,產出簡短的工作週報。
輸出結構如下,不要多餘說明:
1. 本週亮點(3 點,每點一句話)
2. 需要跟進的事項(從事件清單中挑出未完成感或需確認的事,最多 3 點,沒有就省略)
3. 下週注意事項(1-2 句話,根據日曆事件預告)

語言用繁體中文,口吻簡潔專業。

User Prompt:

本週標籤:{{ $json.weekLabel }}
總事件數:{{ $json.totalEvents }}
分類統計:Gmail {{ $json.gmailCount }} 封、Drive {{ $json.driveCount }} 個檔案、表單 {{ $json.sheetsCount }} 筆、會議 {{ $json.calendarCount }} 場

本週事件清單:
{{ $json.eventList }}

節點五:組裝 HTML 信件

加一個 Code 節點,把統計數字和 AI 摘要組成一封 HTML 信:

const stats = $('統計節點').first().json;
const aiText = $input.first().json.text;

const html = `
<div style="font-family:sans-serif;max-width:600px;margin:0 auto;color:#2f3b54;">
  <h2 style="border-bottom:3px solid #4a90d9;padding-bottom:8px;">
    📋 週報 ${stats.weekLabel}
  </h2>
  <div style="display:flex;gap:16px;margin:20px 0;">
    <div style="flex:1;background:#f0f4ff;border-radius:8px;padding:14px;text-align:center;">
      <div style="font-size:28px;font-weight:700;color:#4a90d9;">${stats.gmailCount}</div>
      <div style="font-size:12px;color:#666;">信件處理</div>
    </div>
    <div style="flex:1;background:#f0fff4;border-radius:8px;padding:14px;text-align:center;">
      <div style="font-size:28px;font-weight:700;color:#27ae60;">${stats.driveCount}</div>
      <div style="font-size:12px;color:#666;">檔案歸檔</div>
    </div>
    <div style="flex:1;background:#fff8f0;border-radius:8px;padding:14px;text-align:center;">
      <div style="font-size:28px;font-weight:700;color:#e67e22;">${stats.sheetsCount}</div>
      <div style="font-size:12px;color:#666;">表單回應</div>
    </div>
    <div style="flex:1;background:#fdf0ff;border-radius:8px;padding:14px;text-align:center;">
      <div style="font-size:28px;font-weight:700;color:#8e44ad;">${stats.calendarCount}</div>
      <div style="font-size:12px;color:#666;">會議場次</div>
    </div>
  </div>
  <h3 style="color:#4a90d9;">🤖 AI 週報摘要</h3>
  <div style="background:#f9f9f9;border-radius:8px;padding:16px;white-space:pre-line;line-height:1.7;">
${aiText}
  </div>
  <p style="color:#aaa;font-size:12px;margin-top:24px;">
    由 n8n 自動生成 · ${new Date().toLocaleDateString('zh-TW')}
  </p>
</div>`;

return [{ json: { html, subject: `📋 週報 ${stats.weekLabel}` } }];

節點六:Gmail 寄出

最後加一個 Gmail 節點,Operation 選「Send」:

  • To:你自己的 Gmail 信箱
  • Subject:{{ $json.subject }}
  • Message:{{ $json.html }}
  • Email Type:HTML

存檔,啟用 Workflow。下週一早上 08:00 它就會自己跑,一封整齊的週報出現在你的信箱。

設定 Error Workflow:壞了要知道

流程上線之後,你最怕的不是流程壞掉,是流程壞掉了你不知道。n8n 有一個 Error Workflow 機制,每次任何流程執行失敗,就觸發另一個指定的流程——你可以讓它寄信通知你。

建一個新 Workflow,命名「錯誤通知」。第一個節點選 Error Trigger,後面接一個 Gmail Send 節點:

  • To:你的信箱
  • Subject:⚠️ n8n 流程執行失敗:{{ $json.workflow.name }}
  • Message:
流程名稱:{{ $json.workflow.name }}
失敗時間:{{ $json.execution.startedAt }}
錯誤訊息:{{ $json.execution.error.message }}

請到 n8n Executions 頁查看完整紀錄。

存檔啟用這個 Workflow。接著打開你的每一條流程,進 Workflow Settings(右上角三個點),找到「Error Workflow」,選剛剛建的「錯誤通知」。

設完之後,以後任何一條流程執行失敗,你都會收到一封通知信,知道是哪條流程、什麼時候、什麼錯誤。不用每天手動去 Executions 頁巡邏。

流程壞了怎麼查:n8n 執行紀錄完全指南

n8n 流程壞掉了?四步驟找出問題

系統接好之後,偶爾會遇到流程突然停止的狀況。除錯的第一步不是重建流程,是看執行紀錄。

進入方式: n8n 左側選單點「Executions」。畫面會列出所有流程的執行歷史,成功的顯示綠色「Succeeded」,失敗的顯示紅色「Error」,點進去就能看流程圖。

流程圖上,成功跑完的節點邊框是綠色,失敗的是紅色,還沒跑到的是灰色。點紅色節點,看右側 Output 面板裡的 Error 欄——這就是真正的錯誤原因。

常見的錯誤訊息解讀:

錯誤訊息 原因 解法
The caller does not have permission OAuth token 失效 Credential 重新授權
Error 400: redirect_uri_mismatch Redirect URI 設定錯 Google Cloud Console 更新 URI
429 Too Many Requests API 呼叫過快 加 Wait 節點,或降低批次頻率
SyntaxError: Unexpected token AI 輸出不是純 JSON Prompt 加強 + Code 節點防禦解析
File not found Drive 移動後 ID 變了 合併 Move + Rename 成單一節點
Invalid grant Refresh token 被 Google 撤銷 OAuth 同意畫面改為「已發布」後重授權

看到錯誤訊息不知道怎麼辦,最快的方法是:把錯誤訊息原文貼給 Claude 或 ChatGPT,說「這是 n8n 執行報錯,我的流程是接 Google Drive/Gmail/…,請解釋原因並告訴我怎麼修。」比自己查文件快三倍。

成本總估算

很多人以為自動化要花很多錢,實際算起來你可能會驚訝。

整套系統月費估算:《Google 全家桶自動化》

整套系統跑起來,費用的大頭反而是你本來就在付的 Google Workspace。n8n 如果選擇自架(用 Docker 跑在 NAS 或雲端 VPS),授權費用是零;Google Cloud 的 OAuth API 啟用完全免費,在個人用量下不會觸及付費門檻;AI API 按用量計費,本課的流程以每天處理幾十封信、每週一次週報的規模,每月大約 $2–5 美元。

自架 n8n 方案月費估算:$9–12 美元(約 280–370 台幣)

如果你不想自架,選 n8n Cloud Starter 方案(€24/月,約 $26 美元,提供 2,500 次執行),五條流程的月執行次數大約是 200–500 次,Starter 方案足夠。加上 Google Workspace 就是 $33–42 美元/月,相當於每月一杯 Starbucks 的價格,省下的時間以一週 3–5 小時計算,等同讓自己的時薪翻一倍。

省成本的兩個選擇
  1. AI API 選小模型:週報摘要用 GPT-4o mini 或 Claude Haiku 就夠,不需要用旗艦模型。小模型每次呼叫成本低 10–20 倍,在本課的用量下感覺不出差異。
  2. n8n 自架:有 NAS 或 VPS 的人建議自架,Docker 安裝五分鐘搞定,自架版功能和 Cloud 版完全一樣,只差在你自己管更新。

常見坑大全

整合五條流程之後,問題比單條流程更難找,因為失敗點可能在任何一條。以下是整個系統跑起來後最常見的六個問題:

坑 1:OAuth token 7 天到期,整批流程同時失效

症狀:某天早上所有 Google 相關節點全部報 Token has been expired or revokedThe caller does not have permission,不是某一條流程出問題,是所有流程。

原因:Google Cloud 的 OAuth 同意畫面發布狀態是「測試中(Testing)」,測試模式下 token 只有 7 天效期。7 天到就全部失效。

解法:Google Cloud Console → API 和服務 → OAuth 同意畫面 → 把「發布狀態」改為「已發布(In production)」。Drive API 不屬於受限制範圍,不需要 Google 審核,直接改。改完後在 n8n 的 Credentials 重新「Sign in with Google」一次,之後 token 就是長效的,不用再煩這件事。

坑 2:Google Sheets 寫入成功,但「事件紀錄表」欄位對不上

症狀:事件紀錄表裡有資料,但某些欄位是空的,或資料跑錯欄。週報抓資料時統計全部是 0。

原因:Sheets Append Row 節點的欄位名稱,必須和工作表的「第一行標題」完全一致,包含空格和標點符號。最常見的是欄位名稱用了全形冒號或多了一個空格。

解法:在 n8n 的 Sheets 節點,展開「Fields to Send」,每一個 Key 的名稱都照 Sheets 的標題原封不動複製貼上,不要手打。懷疑欄位對不上時,加一個 IF 節點先做除錯,把實際寫入的 JSON 打印出來看。

坑 3:Schedule Trigger 時間跑偏——台灣時間 08:00 結果 16:00 才寄

症狀:週報設定週一 08:00,結果信到下午才來。

原因:n8n 的 Schedule Trigger 時間是依伺服器的時區設定。n8n Cloud 的伺服器時區預設是 UTC,台灣是 UTC+8,所以 Trigger 設 08:00 = UTC 08:00 = 台灣 16:00。

解法:在 n8n 的「Settings」(左側選單底部)→「Personal Settings」或「Instance Settings」找到「Timezone」,改成 Asia/Taipei。或者如果你只有 Workflow 層的設定權限,在 Workflow Settings 裡設定時區。改完後 Schedule 的時間才對得上台灣時間。

坑 4:AI 摘要節點輸入 token 超長,API 報錯或費用暴增

症狀:某週事件特別多(例如一週處理 200 封信),AI 節點報 maximum context length exceeded,或 API 費用突然暴增。

原因:把整份事件紀錄清單原文灌給 AI,每行都是一筆事件,200 行就可能超過模型的 context 上限,或讓費用不成比例的升高。

解法:在 Code 節點的統計步驟裡加一個截斷:

// 只把前 50 筆事件傳給 AI,超過的只用統計數字
const maxEvents = 50;
const trimmedList = rows.slice(0, maxEvents)
  .map(r => `• [${r['來源']}] ${r['摘要']}`).join('\n');

const eventList = rows.length > maxEvents
  ? trimmedList + `\n(另有 ${rows.length - maxEvents} 筆未列出)`
  : trimmedList;

週報摘要不需要每一筆細節,AI 只需要統計數字和幾個代表性事件就能寫出好摘要。

坑 5:多條流程同時觸發,Sheets 寫入發生競爭

症狀:事件紀錄表某幾行資料不完整,或明明有五個事件卻只寫進來三筆。

原因:如果 Drive 流程和 Gmail 流程幾乎同時觸發(例如都設定每天 09:00 跑),兩條流程同時對同一張 Sheets 做 Append Row,偶爾會發生衝突。

解法:把不同流程的觸發時間錯開 2–5 分鐘(例如 Drive 09:00、Gmail 09:03、Sheets 09:06),避免同時寫入。或者在 Sheets 節點裡改用「Add Row」而非「Append or Update」,前者的衝突處理更穩定。

坑 6:週報流程成功執行,但週報信永遠沒到

症狀:n8n Executions 頁顯示週報流程「Succeeded」,但信箱沒有收到信。

原因有三種可能:第一,信被 Gmail 的垃圾郵件過濾擋掉了——自動化程式發出的 HTML 信件有時會觸發垃圾郵件判斷;第二,Gmail 節點用的是「Send」但沒選正確的 Credential,信其實是從別的帳號發出去的;第三,HTML 內容有語法錯誤導致 Gmail 靜默丟棄。

解法:先去「垃圾郵件」資料夾找找。如果都沒有,在 Gmail 節點裡把「To」改成一個你確定能收到信的 Gmail 帳號(不要自己發給自己,改發給另一個你的帳號),測試是否能收到。HTML 有問題的話,先用純文字格式測試成功,再逐步換回 HTML。

作業

  1. 在你的事件紀錄 Google Sheets 建好五個欄位,分別在前五課的各條流程末尾加上 Sheets Append Row 節點,讓每一條流程執行完都往表格寫一行紀錄。手動觸發各流程一次,確認表格有資料進來。

  2. 完整建好每週自動週報流程(從 Schedule Trigger 到 Gmail 寄出),手動執行一次測試,確認你的信箱能收到週報,格式正確。

  3. 建好 Error Workflow,並在所有流程的 Workflow Settings 指定它。之後找一個方法故意讓某條流程失敗(例如暫時把 Sheets ID 改錯),確認你會收到通知信。

  4. 選做:在週報 HTML 裡加一個「本週歸檔的檔案清單」區塊,列出前 5 個從事件紀錄表抓到的 Drive 歸檔事件,每個帶上 Drive 連結——這樣週報不只是統計數字,還能直接點開查看。

下一步

整個《Google 全家桶自動化》課程到這裡就完整了。你現在有一個真正在運作的個人文件自動化中樞——每一封信、每一個檔案、每一張表單、每一場會議,都有對應的自動化流程處理,最後每週一用一封週報告訴你整個系統這週做了什麼。

但這套系統還有一個層次你沒碰到:目前這些流程都是「固定規則的執行」——AI 在裡面扮演的是翻譯角色(把文字翻成結構化資料),還沒有真正的「決策能力」。如果你想讓 AI 不只分類,還能判斷「這封信需不需要我回覆」、「這個任務應不應該放進日曆」、甚至「幫我起草回信草稿」——那就是下一個層次:AI Agent

AI Agent 課會教你用 n8n 的 AI Agent 節點建出有記憶、有工具、能多步驟推理的自動化代理,讓你的系統從「照規則執行」升級到「自主判斷執行」。MCP 課則會教你用 Model Context Protocol 讓 Claude 直接操作你的本機檔案和瀏覽器——這兩門課是這套系統的自然延伸,也是 2026 年 AI 自動化真正的前沿。

#n8n#Google Workspace#AI 自動化#週報#綜合實戰

← 回所有文章