Условия — IF и Switch
В сценарии часто нужно повести разные данные по разным веткам: «если оплата прошла — отправить чек, иначе — отправить напоминание». Для этого в n8n есть два узла: IF и Switch.
IF: одна развилка на две ветки
Узел IF проверяет условие и направляет item в одну из двух выходных веток: true или false. На каждом выходе подключаете дальнейшие узлы.
В настройках задаются:
- Левый операнд — обычно выражение, например
{{ $json.status }}. - Оператор —
equals,not equals,is greater than,contains,is emptyи т.д. Список операторов зависит от типа данных, который вы выбрали (string, number, boolean, dateTime). - Правый операнд — значение для сравнения.
Условий можно задать несколько и объединить их через AND / OR. Если все условия выполняются (для AND) или хотя бы одно (для OR) — item уйдёт в выход true.
Switch: одна развилка на много веток
Когда веток больше двух — вместо цепочки IF лучше использовать Switch. У него один вход и несколько выходов; каждый выход срабатывает по своему условию.
Типичный сценарий:
status = "paid" → ветка 1
status = "pending" → ветка 2
status = "failed" → ветка 3
прочее → ветка по умолчанию
В узле Switch обычно есть два режима:
- Rules — вы описываете несколько правил, как в IF, и каждому соответствует выход.
- Expression — вы указываете одно выражение, которое возвращает имя ветки/индекс выхода. Удобно, когда условие можно вычислить одним выражением.
Имена режимов в вашей версии могут отличаться. Смысл одинаковый: либо явный список правил, либо одно вычисляемое значение.
Пример
После запроса в API оплаты приходит item с полем status. Сценарий должен:
- если
paid— записать в Google Sheets и отправить чек по email; - если
pending— поставить задачу повторно проверить через 5 минут; - иначе — отправить уведомление администратору.
Это естественно ложится на Switch с тремя ветками. Если бы у нас было только «paid / не paid», хватило бы и IF.
Что обычно сбивает с толку
- Несколько items.
IFиSwitchпринимают не один item, а массив. Каждый item оценивается отдельно. На выходеtrueокажутся все items, для которых условие выполнилось; на выходеfalse— все остальные. Это значит, что послеIFна одной ветке может быть 7 items, а на другой — 13. - Типы данных. Если вы выбрали оператор для строки, а сравниваете с числом — поведение может быть неочевидным. Старайтесь явно указывать тип, который вы сравниваете.
- Слияние веток. Если после
IFветки нужно снова объединить, используйте узелMerge(рассматривался в главе про калькулятор).