目錄

n8n 串接 Google 試算表:自動讀取、新增與更新資料

Google 試算表是最常見的「輕量資料庫」:報名名單、訂單、庫存、客戶清單。n8n 可以自動讀取、寫入、更新試算表,並在有新資料時觸發流程。

準備:授權

  • n8n Cloud:建立 Google Sheets 憑證時直接登入 Google 即可。
  • 自架:需要先在 Google Cloud 建立 OAuth 用戶端並啟用 Google Sheets API,完整步驟見 憑證管理。

試算表的格式

n8n 把第一列當作欄位名稱,之後每一列是一筆資料(一個 item):

姓名Email場次狀態
王小明ming@example.com10/20 台北已確認
李小華hua@example.com10/27 台中待確認

讀取後,每一列會變成:

{ "row_number": 2, "姓名": "王小明", "Email": "ming@example.com", "場次": "10/20 台北", "狀態": "已確認" }

欄位名稱建議簡短且不要重複,避免使用合併儲存格。

常用操作

在 Google Sheets 節點中選擇:

操作說明
Get Row(s)讀取資料列,可以設定篩選條件(例如狀態 = 待確認)
Append Row在最後新增一列
Update Row依照某個欄位找到對應的列並更新
Append or Update Row找得到就更新,找不到就新增(最常用)
Delete Rows刪除列
Clear清空工作表
Create建立新的試算表或工作表

選擇試算表與工作表時,可以從清單中挑選,也可以貼上試算表的網址。

欄位對應

新增或更新時,Mapping Column Mode 有兩種方式:

  • Map Each Column Manually:每個欄位分別填入運算式,例如「姓名」填 {{ $json.name }}
  • Map Automatically:輸入資料的欄位名稱和試算表欄位相同時自動對應

更新:用哪一欄比對

Update / Append or Update 需要指定 Column to match on,例如用「Email」欄比對。請選擇不會重複的欄位。

監聽新資料:Google Sheets Trigger

Google Sheets Trigger 會定期檢查試算表,在有新增的列或列被修改時觸發。適合「有人在試算表中新增一筆訂單,就自動處理」的情境。

注意它是以輪詢方式運作(例如每分鐘檢查一次),不是即時的。

完整範例:活動報名自動化

需求:使用者填寫報名表 → 寫入試算表 → 寄出確認信 → 通知管理員。

[Form Trigger] ─▶ [Google Sheets:Append or Update] ─▶ [Send Email:確認信] ─▶ [Telegram:通知管理員]

1. Form Trigger

n8n 內建表單,不需要 Google 表單:

  • Form Title:講座報名
  • 欄位:
    • 姓名(Text,必填)
    • Email(Email,必填)
    • 場次(Dropdown:10/20 台北、10/27 台中)

發布後會得到一個表單網址,可以直接分享。

2. 寫入試算表

Google Sheets 節點,操作 Append or Update Row:

  • Column to match on:Email
  • 姓名:{{ $json['姓名'] }}
  • Email:{{ $json.Email }}
  • 場次:{{ $json['場次'] }}
  • 狀態:已報名
  • 報名時間:{{ $now.toFormat('yyyy-MM-dd HH:mm') }}

用 Email 比對,同一個人重複報名只會更新資料,不會新增重複的列。

3. 寄出確認信

Send Email 或 Gmail 節點:

{{ $('Form Trigger').item.json['姓名'] }} 您好:

感謝報名「{{ $('Form Trigger').item.json['場次'] }}」場次講座,
我們已收到您的報名,活動前一天會再寄送提醒。

因為上一個節點是 Google Sheets,所以用 $('Form Trigger') 讀取表單中的原始資料。

4. 通知管理員

接上 Telegram 或 Slack 節點,傳送「新報名:姓名 / 場次」。

進階:每天寄出報名統計

[Schedule 每天 18:00] ─▶ [Google Sheets:Get Rows] ─▶ [Summarize:依場次計數] ─▶ [Send Email]

Summarize 節點設定:Fields to Split By 選「場次」,Aggregation 選 Count,就能得到每個場次的報名人數。

常見問題

資料量很大時很慢或出錯

Google Sheets API 有速率限制。大量寫入時:

  • 盡量一次寫入多列,而不是每列呼叫一次
  • 使用 Loop Over Items 分批,中間加上 Wait

資料超過數萬筆時,建議改用真正的資料庫(PostgreSQL、MySQL),或 n8n 內建的 Data Tables(依版本提供)。

讀到的數字變成字串

試算表的儲存格格式會影響讀取結果。比較或計算前用 Number() 轉換。

找不到欄位

確認第一列是欄位名稱,且名稱前後沒有多餘的空白。修改欄位名稱後,需要在節點中重新載入欄位。

更新於 2026年10月12日