如何使用 If 節點條件過濾 API 資料並寫入 Airtable?
為什麼需要在寫入資料庫前進行「條件過濾」?
在上一堂課程中,我們成功透過 HTTP Request 節點從 API 取得了 30 筆訂單資料,並將它們全部寫入 Airtable 中。然而在實務應用上,這並非最佳做法。
我們其實不需要將「所有」訂單都存入資料庫,而是只需要處理特定狀態的訂單。例如,我們只想挑出 orderStatus 為 processing(處理中)的訂單,而忽略狀態為 booked(已預訂)的資料。透過條件過濾,不僅能讓資料庫保持整潔,更能節省運算資源與 API 傳輸時間。
如何在 n8n 中加入並設定 If 節點?
為了達到分流資料的目的,我們可以使用 n8n 中的 If 節點 來處理條件邏輯。
步驟一:中斷原有流程並插入 If 節點
- 游標移至
HTTP Request與Airtable節點之間的連線。 - 點擊垃圾桶圖示(Delete)刪除原有的直接連線。
- 點擊
+號,搜尋並新增一個 If 節點。
步驟二:設定條件邏輯 (Expression)
進入 If 節點的設定畫面後,我們需要告訴系統「判斷的標準」是什麼:
- 點擊 Add Condition。
- 針對 Value 1,點擊 Expression 模式。
- 從左側的資料面板中,將前一個節點抓取到的
orderStatus欄位拖拉進來,此時會自動產生變數語法:1
{{ $json.orderStatus }}
- 設定判斷條件:選擇
String類別下的 **is equal to**(等於)。 - 針對 Value 2,輸入我們想要篩選的目標字串:
processing。
步驟三:測試與檢驗分流結果
點擊 Execute Step(執行節點)。執行完畢後,你可以在 Output 面板看到資料被成功分流:
- True Branch(真分支): 包含 14 筆
orderStatus為processing的訂單。 - False Branch(假分支): 包含 16 筆狀態為
booked的訂單。
如何將篩選後的資料正確寫入 Airtable?
既然我們已經把資料分流,接下來只要將符合條件的資料送進資料庫即可。
- 連接正確的分支: 從 If 節點的
true輸出端點,拉一條線連接至原有的 Airtable 節點。 - 清理舊資料: 回到你的 Airtable 介面,將先前測試時一次塞入的 30 筆舊資料全選並刪除(Delete all selected orders)。
- 重新執行工作流: 回到 n8n,點擊下方的 Execute Workflow 完整跑一次流程。
- 驗證結果: 此時回到 Airtable 或查看 Airtable 節點的 Output,你會發現系統只精準寫入了那 14 筆
processing狀態的訂單,且每個欄位(如建立時間、ID、名稱等)皆正確對應。
下一步優化:為什麼我們該精簡傳輸的欄位?
目前我們雖然過濾了訂單狀態,但仍把每一筆訂單的「所有欄位」都傳進了 Airtable。
如果在只有 14 筆資料、5 個欄位的情況下,效能差異並不明顯;但當企業成長到數千筆訂單、數十個欄位時,傳輸不需要的資料會大幅拖慢運算速度、拉長資料傳輸時間,並佔用過多 Airtable 的儲存空間。
因此,在下一個章節中,我們將教你如何進一步過濾,只提取我們真正需要的欄位(例如:員工姓名與訂單編號)來進行後續處理。
常見問答 (FAQ)
Q:在 n8n 中,If 節點與 Switch 節點有什麼不同?
A:If 節點主要用於處理布林邏輯(True / False),適合單一條件的二分法過濾(例如:狀態是否為處理中)。若你需要依據多種不同的狀態(例如:處理中、已出貨、已退款)將資料分流到三個以上的不同工作流程,使用支援多個輸出連接器的 Switch 節點會更加合適。
Q:如果我想設定多個過濾條件可以嗎?
A:可以的。在 If 節點的設定中,你可以點擊 Add condition 來新增多個條件,並設定它們之間的邏輯關係為 AND(必須全部符合)或 OR(符合其中一項即可),以滿足更複雜的商業邏輯。
Q:為什麼不建議把 API 抓到的所有資料直接塞進資料庫保留備用?
A:寫入過多非必要資料會大量消耗系統算力,導致資料傳輸速度變慢且耗時更長。此外,雲端資料庫(如 Airtable)通常有儲存空間與紀錄筆數的限制。精準過濾所需的資料與欄位,是維持自動化工作流高效運作的關鍵最佳實踐。