Chapter 01: n8n 核心觀念 (n8n Core Concepts)

在動手拉節點前,我們先來聊聊 n8n 的靈魂。這章會讓你建立正確的自動化直覺,搞懂資料是怎麼流動的,以及如何使用內建變數隨時抓取動態資訊。

學習目標 (Goal)

  • 搞懂 n8n 的底層語言:JSON
  • 深入理解 Items 的運作邏輯與自動迭代。
  • 掌握常用的 內建變數 (Expressions),讓流程不再卡關。
  • 學會翻閱 Execution History 與基礎 Debug 技巧。

核心觀念 (Concepts)

1. JSON:n8n 溝通的方言

在 n8n 裡,所有資訊流動都是透過 JSON (JavaScript Object Notation)。 想像 JSON 是一個有標籤的置物櫃:

  • Key (鍵):櫃子外的標籤(比如:name)。
  • Value (值):櫃子裡放的東西(比如:"DA2")。


2. 深入理解「Item」(項目)

這是 n8n 最核心且最獨特的設計。搞懂它,自動化就成功了一半。

2.1 什麼是 Item?

在 n8n 的世界裡,每一筆獨立的資料(例如:一封 Email、一個客戶、一筆訂單)都被稱為一個 Item。n8n 處理資料時,不是處理一整塊大文件,而是處理一個「Item 陣列」。

2.2 不用寫迴圈的自動迭代機制

這是 n8n 的獨門絕學:自動化處理。 假設節點 A 傳出了 10 個 Item 給節點 B,節點 B 就會自覺地「跑 10 次」,把每個人都處理一遍。你不需要像寫程式那樣寫 for 迴圈,這就是為什麼 n8n 能讓非開發者也輕鬆上手的原因。


3. n8n 內建變數:表達式 (Expressions) 的靈魂

當你需要抓取上一關的資料或取得系統資訊時,就會用到 Expressions (表達式)。以下是 7 個最常用且新手必學的內建變數:

3.1 $input & $json:資料抓取的基礎

  • $input:代表進入當前節點的所有物件。

    • $input.all():抓出所有資料(陣列)。
    • $input.first() / .last():抓第一筆或最後一筆。
    • 小技巧:如果資料被過濾後變成空陣列 [],可以用 .length 來檢查數量。
  • $json:這是 $input.item.json 的縮寫,也是最常用的!當你從左側拖拉欄位進來時,通常就是它。

    • 好用功能.keys() (抓標題)、.isEmpty() (檢查是否有值)、.hasField("ID") (檢查是否有特定欄位)。

3.2 $workflow & $execution:流程的身份證

  • $workflow:取得流程的 ID 或名稱。

  • $execution:取得「這一次執行」的資訊。

    • 常用場景:區分 Test (測試)Production (正式) 模式。例如:你可以設定只有在正式模式時才發送 Line 通知,避免測試時吵到人。

3.3 $today:日期處理神器

不用寫複雜的 JS 代碼,直接用 {{ $today.format("yyyy-MM-dd") }} 就能產出今天的日期。

  • (台灣) 隱藏版功能:想產出「民國年」?
    • {{ $today.minus(1911, "years").format('y.MM.dd') }} 就能輕鬆達成。

3.4 $runIndex & $prevNode:進階追蹤

  • $runIndex:當你在跑 Loop (迴圈) 時,它會告訴你現在是第幾次執行 (從 0 開始)。

  • $prevNode:當一個節點有多個來源 (如 Switch 或 If) 時,確認資料是從哪一個輸出口跑過來的。

4. Execution History (執行紀錄)

跑完流程後,左邊會出現一排 Executions。這裡記錄了每個節點當時收到了什麼、又吐出了什麼。

IMPORTANT

記得養成好習慣:點一下節點上方的數字,直接進去看 Item 裡面藏了什麼。這能解決 90% 以上「為什麼抓不到資料」的問題。


節點配置 (Node Setup)

我們用最基礎的兩個節點來實測看看。

Manual Trigger (手動觸發)

測試最常用的起點,按一下按鈕流程就開始。

Edit Fields (Set) (編輯欄位)

我們手動塞一筆資料進去:

  1. 拉一個 Edit Fields (Set) 節點。
  2. Assignments 加上 String 類型。
  3. NameusernameValuen8n_learner


實戰挑戰 (Challenge)

  1. 實測一下:點右下角的 Execute Workflow 跑跑看。

  2. 變數測試:在 Edit Fields 中新增一個欄位 today_date,並填入 {{ $today.format("yyyy-MM-dd") }}

  3. 模式檢查:新增一個欄位 is_test,填入 {{ $execution.mode }},看看手動測試時會顯示什麼。

  4. Debug 練習:點擊節點上方的數字,觀察 $json 結構的變化。


TIP

記住一個口訣:n8n 是「一個 Item 接一個 Item」處理。如果執行次數不對,通常是來源 Item 數量算錯了!