這篇帶你把 n8n 接上 Google 試算表,做完會有兩條真的能用的流程:表單或 Webhook 一收到資料,就自動在試算表新增一列;每天早上八點讀一次試算表,把今天到期、還沒完成的項目整理成一則通知。你需要一個 Google 帳號、一台有固定 HTTPS 網址的 n8n(2.x 版),第一次做大約四十分鐘。最花時間的是 Google Cloud 那段憑證設定,n8n 裡的節點反而很快。
本文依 n8n 2.43 版介面(Google Sheets 節點 4.7 版)與 Google 官方文件整理,資料查證至 2026 年 10 月。Google Cloud 主控台的選單名稱偶爾會改,以你看到的畫面為準。
還不太熟 n8n 的節點、表達式和執行紀錄的話,先花十分鐘看建立第一個工作流程,下面的操作會順很多;連 n8n 是什麼都還在評估的,可以從n8n 是什麼開始。
先決定用哪一種憑證:OAuth 還是服務帳戶
n8n 的 Google Sheets 節點有兩種驗證方式,打開節點會在 Authentication 欄位看到「OAuth2 (recommended)」和「Service Account」。兩種都要先到 Google Cloud 建一個專案,差別在「用誰的身分去開這份試算表」。
OAuth 是用你自己的 Google 帳號登入授權,n8n 拿到的權限跟你本人一樣,你在雲端硬碟看得到的試算表它都能讀寫,不用另外分享。代價是 Google 那邊的同意畫面要設定好,而且應用程式停在「測試」狀態時,授權每七天就會失效,後面會講怎麼處理。服務帳戶則是 Google 替你的專案開一個機器人帳號,它有自己的 email,你把試算表分享給它,它才看得到。它沒有七天過期的問題,適合長期在背景跑的流程;不過 n8n 官方文件提醒,2025 年 4 月 15 日之後建立的服務帳戶已經不能直接存取「我的雲端硬碟」,檔案放在共用雲端硬碟(Google Workspace 才有)會比較穩。
| 比較 | OAuth2 | 服務帳戶 |
|---|---|---|
| 用誰的身分 | 你自己的 Google 帳號 | 專案裡的機器人帳號,有獨立 email |
| 能碰哪些試算表 | 你本人看得到的都可以 | 只有分享給它的檔案 |
| 授權會不會過期 | 測試狀態每 7 天要重新連線;改成正式發布或 Workspace 內部應用程式就不會 | 不會,金鑰沒刪就一直有效 |
| 適合誰 | 個人、小團隊,第一次接 | 公司有 Workspace、流程要跟員工帳號脫鉤 |
第一次接、試算表放在個人 Gmail 的雲端硬碟,選 OAuth。公司有 Google Workspace、希望流程跟某個員工帳號脫鉤(人離職了流程照跑),再考慮服務帳戶。用 n8n Cloud 的人,部分 Google 節點可以直接按 Sign in with Google 用官方代管的憑證;自己架的 n8n 和託管的 n8n 都沒有這個捷徑,下面的設定省不掉。
做法一:在 Google Cloud 建 OAuth 憑證
整個過程要在兩個分頁之間來回,一邊是 Google Cloud 主控台(console.cloud.google.com),一邊是 n8n 的憑證視窗。先在 n8n 把憑證視窗打開,因為等一下要從這裡複製回呼網址:進左側的 Credentials 新增憑證(或在任何 Google Sheets 節點的 Credential 欄位選 Create new credential),搜尋並選 Google Sheets OAuth2 API。視窗最上面有一欄 OAuth Redirect URL,用 RoamerHost 託管的話長這樣:
https://你的名稱.roamerhost.com/rest/oauth2-credential/callback把這串網址複製起來,接著到 Google Cloud 主控台照順序做:
- 按左上角的專案選單新增專案,名稱取個好認的(例如 n8n-sheets),建好後確認上方已經切到這個專案。接著進「API 和服務」的「程式庫」,搜尋 Google Sheets API 按啟用,再搜尋 Google Drive API 也啟用。n8n 的 Google Sheets 憑證兩個都會用到,少開 Drive API 的話,節點裡會選不到試算表清單。
- 設定同意畫面。這個選單現在叫 Google Auth Platform(舊介面叫「OAuth 同意畫面」),在 Overview 按 Get started,填 App name 和 User support email。Audience 這一步要選 Internal 或 External:有 Google Workspace、只給公司內部帳號用就選 Internal;用一般 Gmail 帳號只能選 External。最後填聯絡 email、同意使用者資料政策,按 Create。
- 到 Branding 頁的 Authorized domains 加上 n8n 網址的主網域,自架就填你自己的網域,用 RoamerHost 託管填 roamerhost.com,存檔。
- 選 External 的話,到 Audience 頁往下找 Test users,按 Add users 把等一下要登入授權的 Gmail 加進去。沒加的帳號在授權時會被擋下來。
- 到 Clients 頁建立用戶端(從「API 和服務」的「憑證」頁建立 OAuth 用戶端 ID 也可以),Application type 選 Web application,在 Authorized redirect URIs 按 Add URI,貼上剛才從 n8n 複製的那串網址,按 Create。畫面會跳出 Client ID 和 Client Secret,Client Secret 只在這時候完整顯示一次,馬上複製或下載 JSON 存好,弄丟了只能再產生一組新的。
- 回到 n8n 的憑證視窗,貼上 Client ID 和 Client Secret,按 Sign in with Google。跳出來的 Google 視窗選剛才加進測試使用者的帳號;因為應用程式沒經過 Google 驗證,會先看到「Google 尚未驗證這個應用程式」的警告,點「進階」再點「前往」繼續,勾選允許存取試算表與雲端硬碟。回到 n8n 看到 Account connected 就成功了,記得按 Save。
那個未驗證警告看起來嚇人,原因只是這個應用程式是你自己建的、沒有送 Google 審核。Client ID 只在你自己的 n8n 裡,別人拿不到,實際上也只有你會去授權它。
測試狀態的七天限制,上線前先處理
Audience 選 External、發布狀態停在 Testing 的應用程式,Google 發出的 refresh token 七天後就會過期,這是 Google OAuth 文件明寫的規則。症狀是流程平常好好的,大約一週後 Google 相關的節點突然全部失敗。處理方式有三種。公司有 Workspace 的,把 Audience 改成 Internal,內部應用程式沒有這個限制。個人帳號的話,到 Audience 頁按 Publish app,把發布狀態改成 In production,之後授權就不會七天失效;授權時一樣會出現未驗證警告,而且未驗證的應用程式總共只能讓 100 位使用者授權,自己和幾個同事用完全夠。第三種是維持測試狀態、每週回 n8n 的憑證按一次重新連線,只適合還在試做流程的階段。
做法二:用服務帳戶連 Google 試算表
服務帳戶一樣要先建專案、啟用 Google Sheets API 和 Google Drive API(做法一的第一步),但同意畫面和回呼網址都不用設定,步驟少很多:
- 進「API 和服務」的「憑證」頁,選建立憑證裡的「服務帳戶」,填名稱(ID 會自動產生),角色可以先略過,按完成。
- 點進剛建好的服務帳戶,切到「金鑰」分頁,新增金鑰、選建立新的金鑰,格式選 JSON,瀏覽器會下載一個 .json 檔。這個檔案等於這個帳號的密碼,不要放進 Git、不要貼到群組。
- 回 n8n 新增憑證,選 Google Service Account API。Service Account Email 填 JSON 檔裡的 client_email;Private Key 填 private_key 的內容,從 -----BEGIN PRIVATE KEY----- 一路貼到 -----END PRIVATE KEY-----,前後的雙引號不要帶進來。Region 維持預設,Impersonate a User 不用開。
- 打開要讓 n8n 讀寫的試算表,按右上角的「共用」,把 client_email 那串 email 加進去,權限給「編輯者」。之後在 Google Sheets 節點的 Authentication 選 Service Account,再選這組憑證。
公司用 Google Workspace 的,按建立金鑰時可能會被擋,原因是組織政策 iam.disableServiceAccountKeyCreation 禁止建立服務帳戶金鑰,要請 Google Cloud 的組織管理員替這個專案開例外,自己在專案裡改不了。另外服務帳戶沒有自己的雲端硬碟空間,叫它在節點裡建立新的試算表通常會失敗,比較順的做法是由人建好試算表、再分享給它。
Google Sheets 節點的四個常用操作與欄位對應
在畫布上加一個 Google Sheets 節點,Resource 選 Sheet Within Document,Operation 就是你要做的動作。Document 是哪一份試算表,可以用 From list 從清單挑、By URL 貼網址,或 By ID 貼網址中間那段 ID;Sheet 是試算表下方的哪一個分頁,多了一個 By Name 可以直接打分頁名稱。選好之後,節點會去讀這個分頁的第一列當表頭,後面所有的欄位對應都靠這一列。
| 操作 | 做什麼 | 常見用途 |
|---|---|---|
| Append Row | 在資料最後面新增一列 | 表單、訂單、留言進來就記一筆 |
| Update Row | 用某一欄比對,找到就改那一列,找不到就略過 | 改狀態、補資料 |
| Get Row(s) | 讀出整張表,或只讀符合條件的列 | 每日報表、查價目表 |
| Append or Update Row | 用某一欄比對,找到就更新,找不到就新增 | 同一筆資料可能重送、不想重複 |
寫入的三個操作都有 Mapping Column Mode。選 Map Each Column Manually,節點會把表頭每一欄列出來,讓你一欄一欄填值或從左邊拖入欄位,最清楚、也最不容易出錯,新手建議都用這個。選 Map Automatically,節點會拿輸入資料的欄位名稱去對表頭,名稱一模一樣才對得上;對不上的欄位怎麼處理,看 Options 裡的 Handling extra fields in input,預設是 Insert in New Column(s),也就是在表格右邊自動多開一欄。
Update Row 和 Append or Update Row 多一個 Column to match on,選要拿哪一欄當比對依據,例如 Email 或訂單編號。這一欄的值最好是唯一的,有好幾列同值時,節點只會改到最上面那一列。表頭剛好有一欄叫 id 的話,節點會自動把它當比對欄。Update Row 還能選 row_number,也就是列號,跟 Get Row(s) 搭配特別好用:Get Row(s) 讀出來的每一列都會附上 row_number,下一個節點直接用它更新同一列,不怕資料內容剛好重複。
Get Row(s) 的 Filters 可以加好幾個條件,每個條件選一欄(Column)、填要等於的值(Value),條件之間用 Combine Filters 選 AND 或 OR。比對方式是文字完全相同,大小寫、前後空白、日期格式只要差一點就對不上。現在的版本預設回傳所有符合的列,只要第一筆就到 Options 打開 Return only First Matching Row。Options 裡的 Output Formatting 決定讀出來的樣子:一般數值預設是沒有格式化的原始值,日期預設是你在試算表畫面上看到的文字,這點等一下的每日提醒會用到。
表頭不在第一列的表(例如上面還有兩列說明文字),要在 Options 的 Data Location on Sheet 指定 Header Row 和 First Data Row,否則節點會把說明文字當成欄位名稱。寫入的操作還有一個 Minimise API Calls 選項,打開後改用 Google 的 append 方式寫入,比較省 API 請求,但節點上的提示寫明只適合列與列、欄與欄之間沒有空隙的表,中間有空白列的話資料可能會錯位。
例子一:表單送出,自動寫進試算表一列
先準備試算表。新開一份 Google 試算表,把下方分頁改名為「名單」,第一列依序打上:時間、姓名、Email、電話、需求、狀態。表頭打好就盡量別再改名,原因在後面的常見問題會講。
- 新增一個 workflow,第一個節點搜尋 form,選 n8n Form Trigger。Form Title 填「預約諮詢」,在 Form Elements 加四個欄位,Label 分別是姓名、Email、電話、需求,Element Type 依序選 Text、Email、Text、Textarea,姓名和 Email 打開 Required Field。
- 後面接一個 Google Sheets 節點,Operation 選 Append Row,Credential 選剛才建好的憑證,Document 用 From list 選這份試算表,Sheet 選「名單」。Mapping Column Mode 選 Map Each Column Manually,下面會出現六個欄位,照下面的寫法填。
- 按畫布下方的 Execute workflow,n8n 會打開表單的測試頁面(沒有自動打開的話,到表單節點複製 Test URL 貼到瀏覽器),填一筆送出。回到 n8n 看兩個節點都打勾,再打開試算表,應該已經多了一列。
- 確認沒問題後,按畫布上方的 Publish 發布。n8n 2.x 用發布制取代了舊版的 Active 開關,編輯會自動存成草稿,正式網址只跑已發布的版本,之後每次修改都要再按一次 Publish 才會生效。把表單節點裡的 Production URL 給客人用,Test URL 只有你在編輯器按執行時才有作用。
時間 {{ $now.toFormat('yyyy-MM-dd HH:mm') }}
姓名 {{ $json['姓名'] }}
Email {{ $json['Email'] }}
電話 {{ $json['電話'] }}
需求 {{ $json['需求'] }}
狀態 新進時間那欄用 $now,它會照 n8n 的時區產生現在的時間。表單節點本身也會輸出一個 submittedAt 欄位,但那是帶時區的 ISO 格式(例如 2026-10-27T14:03:12.000+08:00),直接寫進試算表不好讀,用 toFormat 轉成自己要的樣子比較乾淨。欄位名稱是中文時,用中括號加引號的寫法 $json['姓名'] 最保險;名稱裡有空格或連字號的,一定要用這種寫法,點號寫法會直接報錯。
不用 n8n 內建表單、要接自己網站的表單,就把第一個節點換成 Webhook,HTTP Method 選 POST。網站送來的 JSON 會放在 body 底下,表達式改成 {{ $json.body.name }} 這種寫法就好;Webhook 的設定、Test 與 Production 網址的差別,寫在 Webhook 與第三方串接教學。
同一個人可能重複送出的話(例如按了兩次送出鈕),把 Append Row 換成 Append or Update Row,Column to match on 選 Email。同一個 Email 第二次進來會更新原本那一列,表裡不會多出重複的資料。
例子二:每天早上讀試算表,整理今天到期的項目
這個例子用一個叫「待辦」的分頁,表頭是:項目、負責人、到期日、狀態。到期日那一欄先整欄選起來,用選單「格式」裡的自訂日期格式設成「年-月-日」(yyyy-mm-dd,例如 2026-10-27)。原因跟 Get Row(s) 的比對方式有關:它讀到的是畫面上看到的日期文字,比對又要求文字完全相同,格式先統一,篩選條件才寫得出來。不確定讀出來長什麼樣子的話,先讓 Get Row(s) 不加篩選跑一次,看輸出面板裡的到期日是什麼格式。
- 新增 workflow,第一個節點選 Schedule Trigger,Trigger Interval 選 Days,Days Between Triggers 填 1,Trigger at Hour 選 8am,Trigger at Minute 填 0。
- 接一個 Google Sheets 節點,Operation 選 Get Row(s),Sheet 選「待辦」。Filters 按 Add Filter,Column 選到期日,Value 填
{{ $today.toFormat('yyyy-MM-dd') }}。再切到節點的 Settings 分頁,打開 Always Output Data。 - 接一個 Code 節點,Mode 維持 Run Once for All Items、語言用 JavaScript,貼上下面那段程式,它會把讀到的列整理成一段文字。
- 最後接你習慣的通知節點,例如 Gmail 或 Telegram,內文填
{{ $json.text }}。手動執行一次確認內容沒問題,再按 Publish。
前兩個節點懶得一個一個點的話,複製下面這段 JSON,在 n8n 畫布上按 Ctrl+V(Mac 是 Cmd+V)貼上就會出現,再把試算表網址換成你的、選好憑證即可:
{
"nodes": [
{
"parameters": {
"rule": { "interval": [ { "field": "days", "triggerAtHour": 8 } ] }
},
"name": "每天早上 8 點",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [0, 0]
},
{
"parameters": {
"resource": "sheet",
"operation": "read",
"documentId": { "__rl": true, "mode": "url", "value": "https://docs.google.com/spreadsheets/d/你的試算表ID/edit" },
"sheetName": { "__rl": true, "mode": "name", "value": "待辦" },
"filtersUI": { "values": [ { "lookupColumn": "到期日", "lookupValue": "={{ $today.toFormat('yyyy-MM-dd') }}" } ] },
"options": {}
},
"name": "讀今天到期的列",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [240, 0],
"alwaysOutputData": true
}
],
"connections": {
"每天早上 8 點": { "main": [ [ { "node": "讀今天到期的列", "type": "main", "index": 0 } ] ] }
}
}Code 節點的程式:
// 讀進來的每一列,只留下有項目名稱、狀態還不是「完成」的
const rows = $input.all()
.map(item => item.json)
.filter(r => r['項目'] && r['狀態'] !== '完成');
if (rows.length === 0) {
return [{ json: { count: 0, text: '今天沒有到期的項目。' } }];
}
const lines = rows.map(r => `・${r['項目']}(${r['負責人'] || '未指派'})`);
return [{
json: {
count: rows.length,
text: `今天到期 ${rows.length} 件:\n${lines.join('\n')}`,
},
}];Always Output Data 那一步很容易漏掉。Get Row(s) 篩不到任何資料時,預設不會輸出任何東西,後面的節點就整條不跑,看起來像流程壞了。打開之後它會輸出一筆空資料,Code 節點的 filter 會把空資料濾掉,最後送出「今天沒有到期的項目」。如果你寧願沒事就不通知,把 Always Output Data 關掉就好。
想連逾期沒做完的也一起抓,就把 Get Row(s) 的篩選拿掉、讀整張表,改在 Code 節點裡篩。日期是 yyyy-MM-dd 格式的文字時,可以直接用字串比大小,把上面程式開頭那段換成這樣:
const today = $today.toFormat('yyyy-MM-dd');
const rows = $input.all()
.map(item => item.json)
.filter(r => r['項目'] && r['狀態'] !== '完成' && r['到期日'] <= today);Get Row(s) 讀到的列也可以順便回寫狀態。通知寄出後想把狀態改成「已提醒」,就從 Get Row(s) 再拉一條線出去,先接一個 Filter 節點只放行狀態不是「完成」的列,再接 Google Sheets 的 Update Row:Column to match on 選 row_number,值填 {{ $json.row_number }},狀態欄填「已提醒」。中間那個 Filter 也順便把 Always Output Data 產生的空資料擋掉,不然 Update Row 會因為 row_number 是空的而報錯。
常見的坑與錯誤訊息
Error 400:redirect_uri_mismatch
按 Sign in with Google 之後,Google 的錯誤頁面寫著 Error 400: redirect_uri_mismatch,意思是 n8n 送過去的回呼網址,跟你在 Google Cloud 用戶端登記的對不上。一個字元都不能差,http 或 https、網域、連接埠、結尾有沒有斜線都算。最常見的原因有三個:網址是手打的而不是從 n8n 複製;n8n 換過網址(例如改用自訂網域)卻沒回 Google 補登記;自己架在反向代理後面,卻沒設定 WEBHOOK_URL 或 N8N_EDITOR_BASE_URL,n8n 顯示的回呼網址就變成 http://localhost:5678 開頭。前兩種回 Google Cloud 把用戶端的網址改對,改完可能要等幾分鐘才生效;第三種要先在 n8n 的環境變數補上正確的對外網址並重啟,再拿新的回呼網址去登記。RoamerHost 託管的實例已經設好對外網址,照抄 n8n 顯示的那串就不會錯。
Error 403:access_denied
授權時看到 access_denied,說這個應用程式還在測試、只開放給開發者核准的測試人員,代表你登入的 Google 帳號不在 Test users 名單裡。回 Google Auth Platform 的 Audience 頁把這個帳號加進去,再回 n8n 重新按 Sign in with Google。常見的情況是用公司帳號建專案、授權時卻登入個人 Gmail,或反過來。
用了一週突然失敗:invalid_grant
流程原本好好的,七天左右後 Google Sheets 節點開始報 invalid_grant,或 Token has been expired or revoked,幾乎都是前面說的測試狀態七天限制。先回 n8n 打開這組憑證、重新按 Sign in with Google,流程馬上能恢復;接著照「測試狀態的七天限制」那段,把應用程式改成正式發布或 Internal,下週才不會再來一次。其他會讓授權失效的情況,還有你在 Google 帳號的安全性設定裡移除了這個應用程式的存取權,或這組授權超過六個月沒被用過。
API has not been used in project 或 it is disabled
錯誤訊息寫著 Google Sheets API(或 Google Drive API)has not been used in project 某串數字 before or it is disabled,就是 API 沒啟用,或啟用在另一個專案。回 Google Cloud 確認上方選的是建憑證的那個專案,兩個 API 都啟用,等一兩分鐘再試。
欄位名稱有空白、表頭改過名字
Google Sheets 節點是用表頭的文字去對欄位,看不見的空白也算數。表頭打成「Email 」(後面多一個空格)時,用 Map Automatically 寫入,輸入資料的 Email 對不上這一欄,節點會在最右邊再開一欄新的 Email,表裡就多了一欄重複的欄位。解法是回試算表把表頭的空白刪掉,表頭也盡量用不含空格的短名稱。表達式裡要引用名稱有空格的欄位,寫成 {{ $json['客戶 姓名'] }},點號寫法會出錯。
另一個常見的是節點設定好之後才去改表頭,執行時出現 Column names were updated after the node's setup。這時打開節點,重新選一次 Mapping Column Mode(官方文件建議的做法),讓節點重抓表頭,再把欄位對應補好。Get Row(s) 的篩選如果還指著舊的欄位名稱,則會看到 The column "舊名稱" could not be found,一樣把 Column 重新選過。
429:The service is receiving too many requests from you
這是 Google 的 API 配額用完了。依 Google 官方文件(2026 年 9 月更新),Google Sheets API 的讀取和寫入各自是每個專案每分鐘 300 次、每個使用者每個專案每分鐘 60 次,沒有每日上限,超過就回 429,等下一分鐘就恢復。要留意 n8n 的一次 Append Row 背後不只一個請求,它會先讀表頭和現有資料,再寫進去;Webhook 一分鐘湧進幾十筆、每筆各跑一次流程,很容易撞到每分鐘 60 次的上限。
同一次執行裡的多筆資料,Append Row 會整批一次寫入,所以能批次就批次,例如先把資料收進 n8n 內建的 Data table 或資料庫,再用排程每隔幾分鐘整批寫進試算表。迴圈裡一筆一筆寫的流程,用 Loop Over Items 分批、中間接一個 Wait 節點緩一緩。偶發的 429 可以到節點的 Settings 打開 Retry On Fail,設定 Max. Tries 和 Wait Between Tries (ms)。Google 的文件寫明標準用量不另外收費,但也預告 2026 年稍晚起,超過配額的請求計畫向 Google Cloud 帳單收費,大量寫入的流程最好現在就照上面的方式收斂。
時區不對:今天明明有到期的,卻說沒有
每日提醒用的 $today 和 $now,以及 Schedule Trigger 的 8am,都跟著 n8n 的時區走。自己架的 n8n 沒設定時,預設時區是 America/New_York,台灣早上八點在紐約還是前一天晚上,$today 就差了一天。在環境變數設 GENERIC_TIMEZONE=Asia/Taipei,或到 workflow 的 Settings 把 Timezone 改成 Asia/Taipei 就好。RoamerHost 託管的 n8n 開好就是台灣時區,不用另外設定。
不想自己顧 n8n 主機的話
Google 試算表流程要穩定跑,n8n 本身得 24 小時開著、有固定的 HTTPS 網址(OAuth 回呼和 Webhook 都靠它),時區也要對。這些自己架完全做得到,要花多少成本與時間可以看自架 n8n 的成本拆解。不想自己顧主機、追版本的話,RoamerHost 的 n8n 全託管是獨立容器,開好就有專屬 HTTPS 子網域與 Webhook 網址、時區預設台灣,含自動更新與自動備份,執行次數與流程數不設上限,年繳 NT$5,988(平均每月 NT$499),卡關時可以直接用中文問我們。
常見問題
Q:n8n 串 Google 試算表要付錢嗎?
Google 這一端目前不用。Google Sheets API 的標準用量不另外收費,只要每分鐘不超過配額;Google 已預告 2026 年稍晚起,超出配額的請求計畫開始收費。n8n 這一端看你怎麼跑:自己架的社群版免費,但主機與維護自己負責;n8n Cloud 依執行次數計費;託管服務則是固定的年費。
Q:一組 Google 憑證可以給多個流程、多份試算表用嗎?
可以。OAuth 憑證能碰到你帳號看得到的所有試算表,建一次就能在每個 Google Sheets 節點選用;服務帳戶則是分享給它的檔案都能用。要注意同一個 Google Cloud 專案的配額是大家共用的,流程多了,每分鐘 300 次的專案上限要一起算。
Q:可以在試算表有新資料時自動觸發 n8n 嗎?
可以用 Google Sheets Trigger 節點,它是定時去檢查有沒有新增或修改的列,並非即時推送,每檢查一次也會用掉讀取配額。需要即時反應的話,讓資料的源頭直接打 n8n 的 Webhook 會比較快,也比較省配額。
Q:資料該存在 Google 試算表,還是 n8n 的 Data table?
要給人看、讓同事一起編輯、做樞紐分析的,放 Google 試算表;只有流程自己在讀寫的中繼資料(例如記錄哪些訂單已經處理過),放 n8n 內建的 Data table 比較快,也不受 Google API 配額限制。兩者也常一起用:流程先寫 Data table,每天整理一次再寫進試算表給人看。
Q:AI Agent 可以直接查 Google 試算表嗎?
可以。AI Agent 節點的工具裡有 Google Sheets Tool,憑證就用這篇建好的同一組,讓 Agent 查價目表、庫存表都很方便,做法見 n8n AI Agent 教學。
資料來源:n8n Google Sheets 節點文件、n8n Google OAuth 憑證設定、n8n Google 服務帳戶憑證、n8n 工作流程發布說明、Google Sheets API 用量限制、Google OAuth 2.0 文件、Google Auth Platform 應用程式受眾說明。