,

在 n8n 自動化使用 Google 服務詳解 | 從申請 Google Service Account 到 n8n Credential 設定

n8n 串接 Google 服務時,用 service account 更穩定,雖然繁雜,讓我們一起完成!

OAuth2 會常被踢掉,使用給機器專用的 Service Account 就沒有這個麻煩,但你要學新觀念
OAuth2 會常被踢掉,使用給機器專用的 Service Account 就沒有這個麻煩,但你要學新觀念(圖:Gemini)

網站服務用「帳密」認證,n8n 是個機器人不會輸入帳密,要設定 n8n「證書」(Credential),讓它代表你整合各種服務。我覺得 n8n + Google 服務如虎添翼,但 Google 的認證網站卻很「反人類」,導致上課總有學員卡關,本文詳解服務帳戶 ( Service Account ) 申請細節,就發現其實很簡單。

你可把本文當小抄,忘了再查即可!隨着教課會持續更新,保持最新狀態。

Google 多種認證方式解析

Google 認證設定網址是「GCP,Google Cloud Console」,第一次用覺得是天書,久了以後,還是一樣~~,但它很有用啊!我們不求很懂,這裡教你最簡單的,就可以開始用好用的 Google 服務了。

Google 有 3 種認證方式:

  1. API 金鑰(API Key):這是最容易使用的,跟大部分服務類似,就是一長串文字貼進去就好了!可惜 Google 只有 Google Gemini 可用這麼好用的服務。
  2. 開放授權協定 2.0(OAuth2):這是好幾家科技公司合作制定的「授權標準協定」,包括 Google 和 Facebook 等,目的是讓人可以用大廠的帳號登入其他網站。例如「使用Google 認證登入 Line」。如果用它發現工作流突然放爛,很大機率是被 Google 踢掉了,這個服務代表你,權限與你相同。
  3. 服務帳戶(Service Account):顧名思義,這帳戶(Account)不是人用,而是「服務」(Service)用的,就是「『你的機器』對『 Google 的機器』」之間的認證。

😁 第一次看到這個名稱是不是以為用這個帳戶就可獲得 Google 特別的服務?並不是!

因為 n8n 是機器人,就是個「服務」,用「服務帳號」Service Account 讓服務有自己的帳號。

  • 授權對象:針對「應用程式或服務」,而非個人使用者。
  • 流程:為 n8n 建立一個專屬的「服務身分」。這個身分擁有自己的金鑰(通常是 JSON 格式),n8n 透過金鑰直接向 Google 驗證身分,並取得存取權。
  • 優點:金鑰不會過期,且不受個人帳號密碼變更或停用的影響。一旦設定完成,它就能穩定地運作,非常適合後台自動化。

重點就在「不會過期」,我們睡覺時,n8n 仍然在工作,憑證過期要一一重新登入,否則工作流不執行會出大麻煩,甚至捱罵!

開始申請 Service Account

分幾個步驟,從 Google Cloud Platform (GCP) 設定、n8n 的 Credential 設定,到授予權限,開始吧!

接下來有幾個流程:

  1. 登入 GCP
  2. 新建或開啓專案
  3. 啓用想用服務的 API
  4. 建立服務帳戶
  5. 產生金鑰
  6. 到 n8n 建立憑證 (Credential)

第一步:Google Cloud Platform (GCP) 設定

這是最關鍵的一步,因為大部分的設定都在這裡完成。

1. 建立一個新的 GCP 專案(Project)

新增專案或選擇現有專案開啓 Service Account
新增專案或選擇現有專案開啓 Service Account
  • 前往 Google Cloud Console
  • 點擊頂部的專案選擇器,選擇 New Project
  • 輸入一個有意義的專案名稱,例如 n8n-integrations,然後建立。

2025/09/27 補充:最近 GCP 會跳出「$300 三個月試用優惠」訊息,要申請哦!沒使用不影響 Service Account 申請,但後續使用,就算免費服務都會跳出帳務錯誤訊息,很煩的。1

2. 啟用必要的 API

側邊欄進入啓用 API 服務
按下「漢堡按鈕」打開側邊欄,進入啓用 API 服務,在此啓動一些 API
選擇加入需要的 API
按下後可以選擇加入需要的 API
進入搜尋視窗,搜尋你需要的服務
Google 服務近 500 種,所以要去搜尋你要開啓哪些服務,很多人問有沒有一個地方展示已經開啓了哪些服務?抱歉我還沒找到。
從搜尋結果找到你要用的服務
從搜尋結果找到你要用的服務,搜尋時會跳出幾個建議選項,別急着按,因為它服務太多同名或類似服務很多,全部打完再搜尋,從結果裡選擇,急着打開可能會開到看起來是卻錯的服務,例如 Google Drive 就有 3 個服務,要打開看看選對的那個。
啓用這個服務的 API
啓用這個服務的 API,如果顯示「啓用」(Enable) 就是還沒開啓,如果開啓了會顯示「管理」。

根據你需要使用的 n8n 節點,搜尋並啟用對應的 API。

每次打開 GCP 這個反人類的網站很麻煩,我建議你一次把常用服務的 API 都開好,那短期內不用回恐怖的 GCP 了,例如:

  • 雲端硬碟 Drive
  • 試算表 Sheets
  • 文件 Docs
  • 簡報 Slides
  • 郵件 Gmail
  • 通訊錄 People
  • 任務清單 Tasks
  • 行事曆 Calendar

3. 建立服務帳號(Service Account)

開啓 Service Account
按下「漢堡按鈕」開啓左側選單,找到 IAM & Admin > Service Accounts,建立服務帳戶 (Service Account)
填寫 Account 名稱,自取不限制
在跳出的畫面先輸入服務帳號名稱,就是個名字可自取,例如 n8n-service-account,一定要是英文、數字,不能中文,然後點選 Create and Continue
提供這個服務的存取權限,可以從上面搜尋
提供這個服務的「存取權限」,這是 Service Account 最抽象的「權限」設定,因為機器人不是人類,不能到時候思考它能不能使用這個服務,所以要先幫它限制好。Grant this service account access to project 頁面,選擇一個角色(Role)。
  • 官方建議:安全起見,給予最少但足夠的權限。例如,如果只用 Google Sheets,可以搜尋並選擇 Google Sheets EditorGoogle Sheets Reader。如果不確定,可以先選擇 Editor,之後再根據需求調整。
  • 實際使用:只有我一個人用時都給最高權限,免得卡住找不出原因時原來是權限不夠啊!如果你要讓別人用,還是保守一點好。
  • 如果你想要成為資安專家,這裏可以做到超細緻的設定,初學者就不用了。
這可以忽略
Grant users access to this service account 頁面留空(因為你不需要其他人存取這個服務帳號),點選 Done
你已經成功建立 Service Account 了
現在,你已經成功建立 Service Account 了,就是圖中那個超長的 Email 帳號(實際上無法寄信),但還沒有取得金鑰,下一步來做。

4. 產生服務帳號金鑰(JSON Key)

有「帳號」就有「密碼」,前面你獲得「帳號」了,現在要來取得「密碼」。

按下「漢堡按鈕」開啓左側選單,從 IAM & Admin > Service Accounts 回到服務帳戶 (Service Account) 頁面,點選你剛才建立的服務帳號名稱。
一開始會在「Detail」標籤頁,切換到「金鑰」(Keys)標籤頁。
點選 Add Key > Create new key
彈出視窗選擇 JSON 格式,然後點選 Create,瀏覽器會下載一個 JSON 檔案。

它下載的這個 JSON 檔包含你的服務帳號 Service Account 的「帳號」和「密碼」(金鑰)。請務必妥善保管,不要外洩!

20250927 補充:JSON 檔不要刪除,儲存在一個你記得的位置。除了 n8n 外,如果想讓 AI 操作 Google Sheets 或 Docs 等服務,這些 MCP Server 通常要求提供 JSON 檔證明,而不是輸入帳密。

第二步:n8n Credentials 設定

n8n 幫你把 Google 的各種認證方式都設好了,當然你可以去「Credential」欄位新增,但會一下列出上百種不同的選項,光是 Google 就超過 10 種,經驗中學生常常眼花申請到錯的形式。

我想的辦法是,你去 n8n 增加一個會用到的服務節點,直接從節點上新增,就絕不會搞錯了。

我以在 n8n 天天用到的 Google Sheets(試算表)為例,會天天用是因為:

  1. 操作跟 Excel 一樣(甚至更簡單)大家都會
  2. 它是聯網的,不用上傳檔案,比 Excel 方便
  3. 它存取速度極快,當小資料庫都沒問題,資料多可能會不行
  4. 它是免費服務
打開 n8n,增加一個最簡單的手動 trigger 後,新增一個 sheet 節點,它會跳出一大堆功能,都不重要,任選一個
Sheet 節點會把你帶到這個畫面,打開上面的 Credential to Connect with,如果你還沒設定,這裡會空白顯示錯誤,如果你曾經設定過 OAuth2,可從下拉選單選擇新增 Credential。
回到 n8n 輸入這些資料
  • Connecting using:如果你是從某服務進來會看到這個,有 OAuth2 和 Service Account,選後者,你會發現當選擇 Service Account 時就不管你用什麼服務了,因為它是通用的,只需要設定一次(OAuth2 則要為每個服務分別設定)
  • Region:不管,如果要用高速運算服務訓練 AI 才要填,它不是全世界提供的,其中有一個是台灣苗栗哦!
  • Service Account Email:就是你剛剛申請到的超長 Email,下面 2 種方式都可以取得,1)從 GCP 的 Service Account Details 複製「Email」內容;2)從你下載的 JSON 檔複製「client_email」內容。

服務帳號是個假 Email,Google 的服務要共享不是要輸入一個 Email 嗎?如果你要讓機器人可以編輯你的檔案,就要授權給這個超長 Email。

在 GCP 複製 Service Account 的 Email
在 GCP 複製 Service Account 的 Email
用文字編輯器打開 json,包括開頭和結尾,和中間所有文字都複製下來,保密!
用文字編輯器打開 json,帳戶是 client-email,密碼是 private-key,除了前後的引號,要複製從頭到尾,中間所有文字,保密!

3 設定 HTTP Request:

  • Set up for use in HTTP Request node:開啓,你就可以用 n8n 內建的 http request 節點來呼叫所有 Google 服務提供的 API(理解為什麼2)。
  • Scope(s):開啓上面選項就跳出這格,暫時不填沒關係,但使用 http request 時會出錯。如果你開啓的是我前面建議使用的 API,按照下面的貼,讓 n8n 全權使用,填上面的;只讓讀不讓改,填下面的(理解為什麼3)。

給你的 Service Account 全部權限,貼下面這些

https://www.googleapis.com/auth/drive,https://www.googleapis.com/auth/spreadsheets,https://www.googleapis.com/auth/documents,https://www.googleapis.com/auth/presentations,https://mail.google.com/,https://www.googleapis.com/auth/contacts,https://www.googleapis.com/auth/tasks,https://www.googleapis.com/auth/calendar
Bash

只給你的 Service Account 讀的權限,不讓修改、寫入,貼下面這些

https://www.googleapis.com/auth/drive,https://www.googleapis.com/auth/spreadsheets,https://www.googleapis.com/auth/documents,https://www.googleapis.com/auth/presentations,https://mail.google.com/,https://www.googleapis.com/auth/contacts,https://www.googleapis.com/auth/tasks,https://www.googleapis.com/auth/calendar
Bash

3. 儲存 Credential

  • 給這個 Credential 一個有意義的名稱,例如 Google Sheets Service Account
  • 點選 Save
  • 完成了。

第三步:授予服務帳號文件存取權限

這一步是許多人容易忽略的關鍵步驟,也是 Service Account 和 OAuth2 最大的不同點。OAuth2 憑證已經代表你的個人身分,所以你個人能存取的檔案,n8n 就能存取。但 Service Account 是一個獨立的身分,你必須手動分享檔案給它。

1. 複製服務帳號的電子郵件地址

  • 回到 GCP 控制台的 Service Accounts 頁面。
  • 你會看到你建立的服務帳號,例如 [email protected]
  • 複製這個完整的電子郵件地址。

2. 分享檔案給服務帳號

  • 打開你要讓 n8n 存取的 Google Sheets、Google Docs 或 Google Drive 資料夾。
  • 點選右上角的「共用」(Share)
  • 在分享彈窗中,將你剛才複製的服務帳號電子郵件地址貼上,並設定其權限(例如 Editor)。
  • 點選 Send

完成以上三個步驟後,你的 n8n 流程就可以使用這個 Service Account Credential,穩定地存取被授權的 Google 服務與文件了。

Service Account 比較方便

n8n 告訴你大部分狀況下用 OAuth2 就足夠了,Google 也告訴你 OAuth2 很穩定,只有在很少情況下被踢掉。

實際使用缺點超多:

  • n8n 每個服務都要重設新的 OAuth2 Credentials 超麻煩
  • 三不五時就會沒來由地被 Google 踢掉,而且每個使用者還要去 GCP 註冊很煩人
  • n8n 因此出錯不會回報,你也不知道你的服務沒運作,假如要收集出現一次就消失的數據,或是每天觸發固定的動作,例如備份檔案,服務沒啓動後果多慘。

所以我不聽 n8n 和 Google 的,用 Service Account 吧!它難在 Google 的設定複雜、機器對機器的觀念不同:

  • 新增或開啓專案:別的網路服務都是進去就取得認證,但 Google 服務太多了,怎麼可能都用在同一個地方,所以要你建立專案管理(但實際上我所有服務都放同一個專案,除非你有個服務要收費,還是拆開,就有獨立的帳單)。
  • 開啓 API 服務:多數的服務只有少少幾個 API,直接勾選,但 Google 服務太多,需要搜尋引擎找出來一一開啓。
  • 超長的服務金鑰:一般的 API Key 只有幾十個字,它的服務金鑰是超長的上百字。
  • 分地區:因為 Google 提供的是全世界的服務,雖然多數服務不限制。
  • 產生怪怪的 Email:因為 Google 各服務內部用 Email 分享權限。

你會發現,Google 這一套複雜是因為它把別人的服務放大了幾百倍,所以需要這麼高等級的管理,而複雜的 Google 混合複雜的 n8n,結果就是複雜到一塌糊塗。

不過按照這個流程完工,你就可以好好享受 n8n 帶給你的方便了。


註解

  1. Google 目的是要你填卡號,它承諾到期真的不會自動扣款(它被告商譽損失太大,丟不起這個臉),而且我們服務多半是免費的,就算填了卡號,也不會產生費用。如果你很在意卡號問題,可考慮改用其他服務,只是 Google 提供服務種類廣,拒用換別家,達成相同效果要申請很多帳號來補。 ↩︎
  2. Google 提供很多 API,可粗略把 API 當作一個「功能」,n8n 幫你整合了。但還有很多 Google 服務沒被 n8n 整合,例如 Google Vision API 來辨識圖片文字,就要用萬用的「http request 節點」。如果沒勾這個選項,service account 用 HTTP Request 時就一直出錯。 ↩︎
  3. 如果勾選了 Set up for use in HTTP Request node,要告訴它哪些服務的 API 准許使用,如果你勾選的超過我給你的範例,你可以問 AI 要怎麼填寫。 ↩︎

讓我們保持聯繫

推送 Push:有個資疑慮的您,按下網址列左方「鎖頭」開啟「通知」會收到通知

電子報 Subscribe:在上方框或側邊欄框中訂閱電子報,我會看到信箱,但不會發垃圾郵件。

合作 Cooperation:行銷、課程合作 請到 About 中填寫表單,留言、臉書專頁聯繫也可以

臉書專頁:疑問或聊天,請留言,或到臉書專頁「Simpro 學習控」關注及留言

訂閱電子報

約雙週更新,絕無垃圾郵件|記得到信箱查看驗證信

最有人氣

探索更多來自 Uncle6 Automatia 六叔自動症 的內容

立即訂閱即可持續閱讀,還能取得所有封存文章。

Continue reading