iT邦幫忙

2025 iThome 鐵人賽

DAY 20
0
IT 管理

《把瑣事交給 n8n:零基礎自動化工作流實戰》系列 第 20

Day 20: 【n8n x Google Sheet】打造社群發文自動化儀表板

  • 分享至 

  • xImage
  •  

在前幾天的文章中,我們已經分享了如何使用 n8n 自動化社群平台的發文流程,從圖文發文到影音上傳都逐步實作完成。今天,我們要把這個工作流再往前推一步,讓它能與 Google Sheet 結合,打造一個小型的「自動化內容管理控制台」。

透過 Google Sheet,我們可以預先規劃每一則貼文的內容、風格,並且在發文完成後紀錄更新發文狀態,n8n 會定時讀取這些指令,生成文案、發佈到各大平台,並將結果回寫到 Sheet。這樣一來,你就擁有一個 閉環式的自動化流程:從任務下達、文案生成、發文,到成果紀錄,全都在同一個工作流中完成。

⚠️ 提醒:Google Sheet 在這裡主要作為教學用途,方便我們示範 Google Sheet 讀取與寫入的使用方法以及控制流程的概念。在實務操作中,Google Sheet 並非最佳後端/資料庫方案。如果你的內容量大或頻率高,建議還是使用專業資料庫或 CMS 來承載任務與紀錄,以避免效能瓶頸與資料安全問題。

其他擁有類似表格 / Table 的平台包括 supabase、AirTable…等等,n8n 也有提供相關的節點。

今天的文章,你會學到:

  1. 如何使用 Google Sheet 節點,並在 n8n 中讀取與寫入試算表資料
  2. 利用 Switch 節點來安排不同風格的文案
  3. 如何將發文結果與貼文 URL 回寫到 Sheet,完成發文紀錄

透過這篇文章,你不僅能學會如何整合 Google Sheet 與 n8n,還能理解「自動化流程如何讀取指令、執行任務、回報結果」的完整思路。這是你打造自動化內容引擎的第一步,也是後續進一步加入錯誤處理、通知功能的基礎。


一、前置作業:Google Sheet 相關設定

在今天的範例工作流中,Google Sheet 不僅是資料儲存的位置,更像是一個「指令面板」:先填寫每一則對照的影音素材檔名、風格、狀態等資訊,使得 n8n 定時讀取這些指令,自動生成文案並發文。

操作步驟:

  1. 建立 Google Sheet Credentials

    • 步驟包含: 在 GCP 專案中啟用 Google Sheet API → 取得 Client ID、secret → 在 n8n 中貼上並登入試算表所在的帳號
    • 詳情可參考 Day 3 文章詳細內容
      https://ithelp.ithome.com.tw/upload/images/20251004/20178017ulej0Vsuy7.png
  2. 建立一個 Google Sheet,我這邊的範例包含以下欄位:

    • file_name:素材檔名,讓我們可以搜尋到指定檔案而非隨機抓取
    • style:文案風格,這邊我用wenChing(文青)、pro(專業)、humor(幽默)、crazy(瘋狂)這四種
    • status:任務狀態(ready:準備發文/ posted:已發文,預設都是 ready)
    • priority:貼文發文的優先順序,為數字,我這邊設定越大優先權越高。如此一來,可以在 sheet 中指定貼文的優先權,讓我們指定那一則貼文要先發
    • 各平台URL:發文後回寫的貼文連結,讓我們方便追蹤
    • LikesComments:發文後取得的互動數(這個今天的文章不會完整實作,但取得方式是呼叫官方 API)
    • complete_time:完成發文的時間,更快速地查看發文的狀態

這邊建議欄位、檔名都使用英文來命名,比較不容易出錯。像是 supabase 如果檔案名稱包含中文或空格,就有很大的機率出錯。

https://ithelp.ithome.com.tw/upload/images/20251004/201780176VDbkGTvr4.png


二、讀取檔案:依照優先權挑選要發的內容

以前的範例工作流中,我們是直接從指定的 Google Drive 中「隨機」讀取一個素材來發,現在我們可以透過 Google Sheet 來讀取高優先權的素材來發文

概述: 從 Sheet 讀取一則「準備發布(Ready)」且優先順序最高的素材。

整體節點長相:
https://ithelp.ithome.com.tw/upload/images/20251004/20178017EN8bPVVBS4.png

操作節點:

  • Google Sheet Read Row(s): 讀取所有準備發布的貼文素材

    • 篩選條件:Status = Ready
    • 節點會讀取出所有符合的列,一個列一個 item
      https://ithelp.ithome.com.tw/upload/images/20251004/201780173vmOll1eho.png
  • Code 節點:挑出優先權最高的素材

    • 將讀取到的列進行近一步的篩選,挑出優先權最高的檔案
      https://ithelp.ithome.com.tw/upload/images/20251004/20178017CHceNuG2up.png
  • Google 雲端硬碟節點:依照檔名取得檔案資料並下載
    https://ithelp.ithome.com.tw/upload/images/20251004/201780174ywJYuYdC4.png

Google Drive 的 Search Query 為
'Your Google Drive File ID' in parents and name = '{{ $json.file_name }}' and mimeType != 'application/vnd.google-apps.folder' and trashed = false ,與 Day 10 中的類似。


三、文案風格控制:Switch 節點

在之前的範例裡,我們直接用單一 AI 節點來生成文案,因為風格需求比較單純。

但如果今天你想要同時測試「活潑風格」、「正式風格」、「幽默風格」等等,就會遇到一個問題:到底要怎麼讓工作流自動判斷,該走到哪一個 AI 節點?

當然,我們可以用 If 節點來做判斷,例如「如果風格 = 活潑 → 走 A 節點;否則 → 走下一個 If 節點」,但是當選項變多(例如 5 種、10 種風格),工作流就會被一堆 If 節點「拉得很長」,變得不直觀、難以維護。

https://ithelp.ithome.com.tw/upload/images/20251004/20178017qEW3yt6YH8.jpg
(圖片來源:連結)

在今天的範例裡,我們要來學習使用 Switch 節點。Switch 可以根據某個欄位的值(例如 Google Sheet 裡的「style」),一次建立多個分支,每個分支對應一種風格。這樣就不需要寫一連串的 If,而是像「分流器」一樣,把資料送到對應的 AI 節點去生成不同風格的文案。

Switch vs If 的差別簡單整理如下:

  • If 節點:適合處理「二選一」的情境(是/否、成立/不成立)。
  • Switch 節點:適合處理「多選一」的情境(例如風格可能是 A/B/C/D,直接分流)。

概述: 根據 Sheet 中的 Style 欄位,決定文案生成方式。
https://ithelp.ithome.com.tw/upload/images/20251004/20178017p18HgElWN0.png

操作節點:

  • Switch 節點
    • 條件:style = wenChing → 文青風格提示詞 AI 節點
    • 條件:style = pro → 專業風格提示詞 AI 節點
    • … 依根據需求去設定
      https://ithelp.ithome.com.tw/upload/images/20251004/20178017ZHEgpyl643.png

這樣子設計,只要在 Google Sheet 「style」欄位填入指定的值(例如 pro、humor、crazy),n8n 就能自動走到對應的風格的 AI 節點,生成該風格的文案。

其他上傳檔案、取得素材 URL、傳遞 binary data 的流程和之前的都一樣


四、發文流程:發文後取得貼文 URL

概述: 將生成的文案和圖片發佈到多平台,並取得貼文在平台的網址

設計:

  • 上傳的節點、等待 container 完成的節點設計與過往相同,只是在上傳完成後,新增取得貼文 URL 的節點
  • 各平台上傳完成後,節點的輸出都是 ID,因此需要去知道 ID 與 URL 之間的關聯
    https://ithelp.ithome.com.tw/upload/images/20251004/201780179Q2JVCU5yy.png

操作節點:

  • 各平台取得 URL 的方式:
    • FB:Edit Fields 節點

      • FB 回傳的 ID 只要皆在固定網址後就可以檢視:
      • 利用 Edit Fields 產生網址:https://www.facebook.com/photo/?fbid={貼文id}
        https://ithelp.ithome.com.tw/upload/images/20251004/20178017XfLBEp4khv.png

      圖片的話是 photo、影片的話將 photo 改為 reel 即可(不用 +s )

    • IG:HTTP Request 節點

      • Method: GET

      • URL: https://graph.facebook.com/v23.0/{貼文ID}?fields=permalink

      • Authentication: Facebook (同一組 IG / FB Page Token Credential)
        https://ithelp.ithome.com.tw/upload/images/20251004/20178017bjLXJoWH7V.png

        https://ithelp.ithome.com.tw/upload/images/20251004/20178017f85h0E9XGH.png

    • Threads:HTTP Request 節點

      • Method: GET

      • URL: https://graph.threads.net/v1.0/{貼文ID}?fields=permalink

      • Authentication: Threads Bearer Credential
        https://ithelp.ithome.com.tw/upload/images/20251004/20178017IcWUJXMYZO.png

        https://ithelp.ithome.com.tw/upload/images/20251004/20178017XqxZ6Bkvha.png

  • Edit Fields 節點
    • IG 與 Threads 都是輸出 permalink 參數,若不重新命名會被洗掉
    • 將發文的 Timestamp 也透過這個節點轉成易閱讀的時間
    • 同時將參數欄位重新命名,後續調用會比較清楚參數名稱
      https://ithelp.ithome.com.tw/upload/images/20251004/20178017PpiKxCDNy2.png

五、回寫 Google Sheet:完成任務紀錄

概述: 將任務結果回寫到 Sheet,形成完整紀錄。

操作節點:

  • Google Sheet → Update Row

    • file_name 欄位來定位我要更新哪一列
    • 更新 Statusposted
    • 填入各個平台的 URL
    • 更新 complete_time 為完成的 timestamp
      https://ithelp.ithome.com.tw/upload/images/20251004/20178017lfNG4nFQqe.png
  • 重新整理後,會發現 Google Sheet 上更新資料了
    https://ithelp.ithome.com.tw/upload/images/20251004/201780178EC5sZZ0zC.png

注意
這種檔名、名稱、各種變數大小寫一定要弄清楚,否則很容易出錯。


六、結語與明日預告

今天,我們完成了簡易的發文「自動化儀表板」的設計:

  • 從 Google Sheet 讀取任務
  • 依照不同風格生成文案
  • 回寫貼文 URL 與發文時間,完成紀錄

這樣的設計不僅讓你的內容流程自動化,也建立了一個「指令 → 執行 → 回報」的閉環概念。

👉 明天,我們將進一步了解 n8n 中的錯誤處理,並以前的所學打造一個錯誤紀錄儀表板以及通知系統,讓你的工作流不僅能跑,還能在失敗時自動紀錄或提醒,打造更專業的自動化內容管理系統。


上一篇
Day 19: 【n8n x Debug 篇 - 下】自動化影音上傳:從卡關到完整跑通
系列文
《把瑣事交給 n8n:零基礎自動化工作流實戰》20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言