Когда использовать итератор
| Сценарий | Пример |
|---|---|
| Обработка результатов поиска | Отправить письмо каждому найденному человеку |
| Обработка массивов вебхуков | Создать записи для каждого элемента по порядку |
| Массовые обновления | Обновить несколько записей с рассчитанными значениями |
| Уведомления | Оповестить нескольких людей о событии |
Понимание итератора
Итератор ожидает на входе массив. Затем он:- Берёт первый элемент массива
- Выполняет все действия внутри итератора с этим элементом
- Переходит к следующему элементу
- Повторяет, пока все элементы не будут обработаны
Базовая настройка
Пример: отправка письма всем из результатов поиска
Цель: найти всех контактов в определённой компании и отправить каждому персонализированное письмо.Шаг 1: Поиск записей
- Добавьте действие Search Records
- Объект: Люди
- Фильтр: Company равно “Acme Inc”
- Это возвращает массив людей
Шаг 2: Проверка наличия результатов
- Добавьте действие Фильтр
- Условие:
{{searchRecords.length}}больше 0 - Это предотвращает ошибки итератора при пустых результатах
Шаг 3: Добавьте итератор
- Добавьте действие Iterator
- Входной массив: выберите
{{searchRecords}} - Это создаёт цикл
Шаг 4: Добавьте действия внутри итератора
Действия, добавленные после итератора, выполняются для каждого элемента:- Добавьте действие Send Email (внутри итератора)
- Кому:
{{iterator.currentItem.email}} - Тема: Привет,
{{iterator.currentItem.firstName}}! - Текст письма: персонализированное сообщение с использованием полей текущего элемента
Результат
Если Search Records возвращает 5 человек, то итератор:- Отправляет письмо первому человеку
- Отправляет письмо второму человеку
- … и так для всех 5
Доступ к данным текущего элемента
Внутри итератора используйте{{iterator.currentItem}}, чтобы обратиться к текущей записи:
| Переменная | Описание |
|---|---|
{{iterator.currentItem}} | Весь объект текущей записи |
{{iterator.currentItem.id}} | ID записи |
{{iterator.currentItem.email}} | Поле электронной почты |
{{iterator.currentItem.company.name}} | Название связанной компании |
{{iterator.index}} | Текущая позиция в массиве (с нуля) |
Типовые шаблоны
Обновление нескольких записей
Цель: пометить все просроченные задачи как “Late”Создание записей из массива
Цель: вебхук получает заказ с несколькими позициями; создайте запись для каждойУсловная обработка внутри цикла
Цель: отправлять письма только контактам с действительными адресами электронной почтыУстранение неполадок
”Iterator expects an array”
Причина: вы передали одну запись вместо массива. Решение: убедитесь, что вы передаёте результат действия Search Records или поле-массив, а не одну запись.Итератор не запускается
Причина: массив пуст. Решение: добавьте фильтр перед итератором, чтобы проверить длину массива:Действия выполняются слишком много раз
Причина: действие Search Records вернуло больше записей, чем ожидалось. Решение:- Добавьте более точные фильтры в Search Records
- Установите ограничение в Search Records (макс. 200)
- Добавьте фильтр внутри итератора для дополнительных условий
Особенности производительности
- Расход кредитов: каждая итерация потребляет кредиты на свои действия
- Время: обработка больших массивов занимает больше времени
- Ограничения: рассмотрите пакетную обработку очень больших операций
- Лимиты скорости: при большом числе итераций внешние вызовы API могут упираться в лимиты скорости
Лучшие практики
- Всегда проверяйте длину массива перед итератором, чтобы избежать ошибок
- Добавляйте фильтры внутри циклов, если обрабатывать нужно не все элементы
- Переименуйте шаг Iterator, чтобы он описывал, что именно перебирается
- Тестируйте на небольших массивах перед обработкой больших наборов данных
- Отслеживайте выполнения рабочих процессов, чтобы убедиться, что итерации завершаются как ожидается