n8n 也可以處理程式裡在不同條件之下走不同的流程,你可以用 If 或 Switch 的節點來做到,以下就是說明方式:
if 節點
延續之前的範例:
Step1: 整理原始資料
接著在 Code 那邊把內容整理成如下:
const location = items[0].json.records.location[0]; const weather = location.weatherElement; const pop = parseInt(weather.find(el => el.elementName === "PoP").time[0].parameter.parameterName, 10); return [{ json: { pop: pop } }];
這樣的結果就是會丟出一個 pop 並顯示降雨機率的數值。
Step 2: 新增 if 節點
新增 if 節點並照如下設定,fx 那邊設定我們從前一個節點來的資料,後面 is greater than 可以用下拉選取條件,我是選擇數字要大於多少,下面的數字則是訂的值,我這次選 50:
接著就可以產出如下的節點,可以接著在 ture 或 false 後增加要做的事情的節點:
Step 3: 在 ture 或 false 增加新的節點指定要做的事
我設定如果降雨機率大於 50%,就會傳「降雨機率大於 50%」的文字到 discord
由於傳文字比較沒變化,我再改成傳不同的圖片如下:
>=50% 傳這張
https://img.icons8.com/?size=96&id=18597&format=png
<50% 傳這張
https://img.icons8.com/?size=96&id=15352&format=png
這樣在 >=50% 跟 <50% 就會在 Discord 看到不一樣的圖片了,完整流程如下:
Switch
不過用 if 節點的話只能有兩個條件,所以上面那個範例只會有太陽跟下雨兩種圖,跟實際要用的情境差很多,所以如果要多幾種情境就要改成 switch,當你需要根據某個欄位的內容來執行不同的流程時,Switch 就非常有用。例如:
- 根據使用者的地區寄送不同語言的 email。
- 根據商品類別走不同的處理流程。
- 根據 API 回傳的狀態碼進行錯誤處理或成功處理。
接著我們實際來練習,首先一樣接著前一個範例,只是後面我們改用 switch 的節點:
Step 1: 整理資料
這次透過 code 把資料整理如下:
const location = items[0].json.records.location[0]; const weather = location.weatherElement; const wx = weather.find(el => el.elementName === "Wx").time[0].parameter.parameterName; return [{ json: { weather: `${wx}` } }];
我這次是把天氣敘述取出來。
Step 2: 新增 switch 節點
switch 節點的不同是你可以增加很多條件,這次我改成抓 $json["weather"] 的資料,並透過 contains 選項去判斷裡面是否有特定的文字後來當作條件。
程式的 switch 有一個叫 default 的是可以來放預設會走的路線,在 n8n 就是在下面的 Fallback Output 選擇 Extra Output 就好
都設定完成我們就可以得到以下的工作流
不過由於預設的工作流顯示的條件是 0, 1, 2...,我們可以透過修改節點名稱讓工作流的使用者體驗更好,你只要勾選 Rename Output 並給予想要的值:
這樣的工作流就更清楚了。
也可以一樣在後面增加區塊處理不同條件下做的事情,以上就是 n8n if 跟 switch 節點的應用方式。