一次搞懂 n8n Data Flow:從節點、Item 到 JSON 的資料傳遞邏輯全攻略

n8n node

剛開始接觸 n8n 的你,是不是覺得拖拉節點、設定觸發器都還算簡單,但一碰到資料傳遞就開始頭痛?一下是 Items,一下又是 JSON,搞不清楚資料到底跑到哪裡去,想抓個特定欄位卻頻頻出錯?

別擔心,你不是一個人!幾乎所有 n8n 新手都會卡在「Data Flow (資料流)」這一關。這就像學開車,你知道方向盤往左轉車子就往左,但如果不了解引擎、變速箱的運作原理,遇到一點小狀況就很容易熄火。

其實,n8n 的資料傳遞邏輯非常有系統,一旦你搞懂了底層的運作規則,你會發現整個世界都清晰了起來。這篇文章就是要當你的教練,用最白話的方式,帶你一次搞懂 n8n 的 Data Flow,從核心概念 Item、JSON 結構,到節點之間的資料傳遞,再到如何用 Expressions 精準操作你想要的資料。準備好了嗎?讓我們發動引擎,正式上路吧!

什麼是 n8n 的 Data Flow?把它想像成一條自動化生產線

在深入技術細節之前,我們先建立一個共同的畫面。你可以把 n8n 的整個工作流程 (Workflow) 想像成一條高科技的自動化生產線。

  • 節點 (Node): 就是生產線上的每一台「加工機」。有的機器負責從倉庫(例如 Google Sheets)拿出原料,有的負責組裝(例如 Set 節點),有的負責篩選(例如 IF 節點),有的負責打包出貨(例如 Send Email 節點)。
  • 資料 (Data): 就是在這條生產線上流動的「原物料」。這些原物料有著固定的規格和格式,方便每一台機器讀取和處理。
  • Data Flow (資料流): 就是整條生產線的「運作流程」。原物料如何從第一台機器,流向下一個,再到下一個,直到變成最終產品,這個完整的傳遞過程,就是 Data Flow。

簡單來說,n8n 的 Data Flow 就是資料在不同節點之間被處理、轉換、傳遞的整個過程。理解這個過程,是打造複雜、強大自動化流程的基礎。

核心概念拆解:Item、JSON 與 n8n 的資料結構

想徹底搞懂 Data Flow,你必須先認識三個最重要的名詞:Item、JSON 和整個資料流的結構。這三者是 n8n 資料世界的基石。

一切的基礎:什麼是「Item」?

在 n8n 的世界裡,Item 是資料處理的最小單位。你可以把它想像成一張訂單、Excel 表格中的一列資料、或是一筆客戶紀錄。

每一個節點(Node)執行完任務後,它的產出 (Output) 通常不是單一一個數值,而是一批「Items」。如果你的 Google Sheets 節點讀取了 10 列資料,那它的輸出就會是 10 個 Items。如果你的 HTTP Request 節點抓到 5 筆 API 回傳的資料,那它的輸出就是 5 個 Items。

重點來了:後續的節點,會針對這批 Items「逐一」進行處理。這也是為什麼當你有 10 個 Items 進入 Email 節點時,會發出 10 封郵件的原因。因為 Email 節點會把每一個 Item 都當作獨立任務,執行一次。

n8n 的通用語言:認識 JSON 格式

那麼,每個 Item 裡面的資料長什麼樣子呢?n8n 採用了一種叫做 JSON (JavaScript Object Notation) 的格式來儲存資料。

別被這個全名嚇到,JSON 的概念超級簡單,它就是一種「Key-Value Pair (鍵值對)」的組合。把它想像成一張個人資料卡:

  • Key (鍵): 就是欄位的「標籤」,例如:「姓名」、「年齡」、「城市」。
  • Value (值): 就是標籤對應的「資料」,例如:「陳小明」、「30」、「台北」。

在 n8n 中,一個 Item 裡的 JSON 資料可能長得像這樣:

JSON

{
  "name": "陳小明",
  "age": 30,
  "city": "台北"
}

幾乎所有現代的網路服務(API)都使用 JSON 格式來交換資料,所以學會看懂它,對你操作 n8n 甚至是其他自動化工具都非常有幫助。

多個 Item 組成的資料流結構

綜合以上兩點,當一個節點完成工作後,它輸出的完整資料結構,其實是一個包含數個 JSON 物件的「陣列 (Array)」。在程式語言中,陣列就是用中括號 [] 包起來的一串東西。

所以,當一個節點輸出了 3 個 Items,它的完整資料結構會像這樣:

JSON

[
  {
    "name": "陳小明",
    "email": "ming@example.com"
  },
  {
    "name": "林美麗",
    "email": "mei@example.com"
  },
  {
    "name": "王大壯",
    "email": "wang@example.com"
  }
]

這個 [ {item1}, {item2}, ... ] 的結構,就是 n8n Data Flow 的全貌。你之後在節點的 Input / Output 畫面中看到的所有資料,都離不開這個基本結構。

資料如何傳遞?節點 (Node) 之間的輸入與輸出

理解了資料的基本結構後,我們來看看這些資料是如何在生產線(Workflow)上流動的。

每個節點都是獨立的處理站

n8n 的運作是線性的,像接力賽一樣。上一個節點的輸出 (Output),會原封不動地成為下一個節點的輸入 (Input)

  1. 節點 A 執行,它可能從 Google Sheets 讀取了資料,產生了一份包含 10 個 Items 的輸出。
  2. 這份包含 10 個 Items 的輸出,被完整地傳遞給 節點 B
  3. 節點 B 接收到這 10 個 Items 作為它的輸入,然後根據你的設定(例如,用 Set 節點新增一個欄位),對這 10 個 Items 進行加工,再產生一份「新的」輸出。
  4. 節點 B 的新輸出,再傳遞給 節點 C,以此類推。

這個「前人種樹,後人乘涼」的接力模式,就是 n8n 資料傳遞的核心。

「Input」與「Output」的對應關係

當你在編輯一個節點時,可以點擊右上角的執行按鈕來測試它。執行後,你會看到節點下方出現「Input」和「Output」兩個分頁,這就是你觀察資料流的最佳視窗:

  • Input Data: 顯示的是「從上一個節點」傳過來的資料長什麼樣子。
  • Output Data: 顯示的是「這個節點自己」處理完後,要傳給下一個節點的資料長什麼樣子。

透過比對 Input 和 Output 的差異,你就能清楚知道這個節點到底對資料做了什麼事。

實戰演練:一個簡單的 Google Sheets 讀取流程

讓我們用一個具體情境來感受一下:

  1. Start Node: 流程的起點,通常沒有資料。它的 Output 是一個空的 Item。
  2. Google Sheets Node (Read):
    • Input: 收到來自 Start Node 的空 Item。
    • Action: 執行讀取試算表,假設讀取了 3 列資料。
    • Output: 產生一個包含 3 個 Items 的陣列,每個 Item 都是一個 JSON,代表一列資料。例如 [ { "欄位A": "值1" }, { "欄位A": "值2" }, { "欄位A": "值3" } ]
  3. Set Node:
    • Input: 收到來自 Google Sheets Node 的 3 個 Items。
    • Action: 設定新增一個名為「狀態」的欄位,值為「已處理」。
    • Output: 產生一個新的、包含 3 個 Items 的陣列。現在每個 Item 都多了一個欄位:[ { "欄位A": "值1", "狀態": "已處理" }, ... ]

這個簡單的流程,完整地展示了資料如何被生成、傳遞與加工。

n8n node

如何存取與操作資料?n8n Expressions 完全解析

光讓資料流動還不夠,真正的威力在於能夠「動態地」存取和操作這些資料。例如,你想在 Email 節點的內文中,填入 Google Sheets 讀取到的客戶姓名。這時候,就要靠 Expressions 來達成。

什麼是 Expression?讓你的 Workflow 活起來

Expression 是一種特殊的語法,可以讓你引用前面節點傳來的資料。它就像 Excel 裡的儲存格參照(例如 =A1+B1),不是寫死一個固定的值,而是動態地去抓取某個位置的資料。

在 n8n 中,任何欄位旁邊只要看到一個小小的 f(x) 或六邊形圖示,就代表你可以使用 Expression。

常用語法教學:$json$node$item

n8n 的 Expressions 語法非常靈活,但對新手來說,先掌握最核心的三種就足夠應付 80% 的場景了。

  1. {{ $json.欄位名稱 }} 這是最常用、最直觀的語法。$json 代表「當前正在被處理的這個 Item」裡面的 JSON 資料。
    • 情境: 在 Set 節點中,你想把 Google Sheets 讀取到的 “姓名” 欄位值,填入 Email 的主旨。
    • 用法: 在 Email 主旨欄位點擊 f(x) 圖示,從左邊的變數面板中,找到上一個節點的 Output Data -> JSON -> 姓名,點擊它,n8n 就會自動幫你填入 {{ $json.姓名 }}
  2. {{ $node["節點名稱"].json.欄位名稱 }} 當你的流程比較複雜,需要回頭去抓取好幾個節點之前的資料時,這個語法就派上用場了。$node["節點名稱"] 可以讓你精準指定要從哪個節點的輸出來抓資料。
    • 情境: 你的流程是 A -> B -> C,但在 C 節點,你需要的資料不是來自 B,而是來自 A。
    • 用法: {{ $node["A的節點名稱"].json.你想要的欄位 }}
  3. {{ $item(index) }} 這個語法比較進階,通常用在需要處理多批資料或迴圈的場合(例如搭配 SplitInBatches 節點)。$item(index) 可以讓你明確地抓取第幾個 Item 的資料。一般情況下比較少直接用到,可以先有個印象即可。

實用技巧:資料篩選與轉換

學會用 Expressions 抓資料後,你就可以做出更複雜的應用:

  • 資料篩選:IF 節點中,你可以設定條件,例如 {{ $json.金額 > 1000 }},只有符合這個條件的 Item 才能通過,流向下一關。
  • 資料轉換:Set 節點中,你可以對抓到的資料做運算,例如 {{ $json.單價 * $json.數量 }} 來算出總價,並存到一個新的「總價」欄位。

常見 Data Flow 問題排解 (FAQ)

理論都懂了,但實作時還是會碰到各種疑難雜症。這裡我整理了幾個新手最常遇到的 Data Flow 問題,並提供解決方案,這可以幫你省下大量摸索的時間。

n8n node

結語

恭喜你!你已經完整地走過了一遍 n8n Data Flow 的核心觀念。讓我們快速回顧一下重點:

  1. 資料流就像生產線:資料 (Items) 在節點 (機器) 之間流動與加工。
  2. Item 是最小單位:每個 Item 內部使用 JSON 格式儲存資料。
  3. 上游輸出 = 下游輸入:節點之間像接力賽一樣傳遞資料。
  4. Expressions 是你的魔法棒:用 {{ $json.欄位 }} 這類語法來動態存取你需要的資料。

n8n 的 Data Flow 看似複雜,但萬變不離其宗。只要你能掌握 Item 和 JSON 這兩個核心結構,並學會在 Input/Output 視窗中觀察資料的變化,再搭配 Expressions 的靈活運用,你會發現沒有什麼自動化流程是你打造不出來的。

現在,打開你的 n8n,試著建立一個簡單的流程,親手去執行、去觀察資料的流動吧!這趟從新手村畢業的旅程,才正要開始!

延伸閱讀
n8n IF 節點教學:掌握 True/False 條件判斷,打造更智慧的自動化工作流
n8n Switch 節點教學:告別複雜 IF 巢狀結構,優雅實現多重條件判斷
n8n Merge 節點教學:合併多個資料來源,告別手動複製貼上
n8n Code 節點終極教學:釋放 JavaScript 的力量,打造無極限自動化
n8n Code 節點 Python 教學:啟用並執行 Python 程式碼,釋放數據處理超能力
n8n Wait 節點教學:讓工作流學會「等待」,完美解決 API 限制與定時任務
n8n Set 節點教學:你的資料瑞士刀,新增、修改、篩選欄位一次搞定
n8n NoOp 節點教學:一個「什麼都不做」的節點,為何是整理工作流的神器?

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端