Документация 0.4 Справочник действий

Для каждого

control.forEach · Управление · контейнер

Перебирает элементы массива

Повторяет вложенные шаги для каждого элемента списка: строк Excel, файлов, записей отчёта, чисел. Текущий элемент и его номер попадают в переменные — их используют шаги тела цикла.

Свойства #

Свойство Имя в файле Значение Обязательное По умолчанию Описание
Элементы items выражение да — Массив, напр. rows или [1, 2, 3]
Переменная элемента itemVariable имя переменной нет item
Переменная индекса indexVariable имя переменной нет — Необязательно; индекс с 0

Результат #

Действие не возвращает значений.

Вложенные шаги #

Ветка Имя в файле
Тело цикла body

Как работает #

  • Элементы (items) — выражение, которое даёт список: rows, clients, [1, 2, 3], paid.slice(0, 10). Не список (число, текст, объект) — ошибка.
  • Переменная элемента (itemVariable, по умолчанию item) — сюда записывается текущий элемент. Для строк Excel с заголовками это объект: {{ client['ФИО'] }}.
  • Переменная индекса (indexVariable) — номер элемента с 0; удобно для адреса ячейки: D{{ i + 2 }}.
  • Цикл идёт по копии списка: если тело меняет исходный список, число повторов не меняется.
  • control.break выходит из цикла, control.continue переходит к следующему элементу. Кнопка «Стоп» прерывает цикл перед следующим элементом.

Ошибки #

Код Причина и что делать
ExpressionError Ошибка в выражении элементов или оно дало не список (например, undefined, если шаг чтения не записал результат в переменную). Проверьте выход шага, который заполняет список

Ошибка шага внутри цикла останавливает весь цикл. Чтобы обработать остальные элементы, оберните тело в control.tryCatch или включите у шага «Продолжать при ошибке».

Пример #

{
  "type": "control.forEach",
  "props": { "items": "clients", "itemVariable": "client", "indexVariable": "i" },
  "children": {
    "body": [
      { "type": "browser.typeInto", "props": { "selector": "#fio", "text": "{{ client['ФИО'] }}" } },
      { "type": "control.log", "props": { "level": "info", "message": "{{ i + 1 }}. {{ client['ФИО'] }}" } }
    ]
  }
}