Условия — 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 (рассматривался в главе про калькулятор).