Документация 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['ФИО'] }}" } }
]
}
}