Перейти к содержимому

7. Циклы и узел Split In Batches

В этом уроке вы узнаете, как управлять циклами в n8n

Обратите внимание на числа рядом с галочками успешного выполнения. Это число показывает, сколько раз узел был вызван в рабочем процессе:

Упражнения

Извлеките списки последних публикаций из трех RSS-потоков, возьмите от них название, дату и ссылку, и сложите в один список.

Здесь находятся данные для узла Code в первом шаге

return [
  {
    url: 'https://medium.com/feed/n8n-io',
  },
  {
    url: 'https://dev.to/feed/n8n'
  },
  {
    url: "https://techcrunch.com/feed/",
  }
];

Кроме того, вам еще понадобится код на 9-м шаге

const allData = []

let counter = 0;
do {
  try {
    const items = $("Set").all(0, counter).map(item => item.json);
    allData.push.apply(allData, items);
  } catch (error) {
    return [{json: {allData}}];  
  }

  counter++;
} while(true);
  1. Создайте узел Code, взяв код из списка выше ☝🏽, назовите его Source.
  2. Добавьте узел Split In Batches, и установите размер батча 1. Так вы будете работать только с 1 источником за раз. Запустите узел.
  3. Добавьте RSS Read, пусть читает новости по адресу из предыдущего узла. Запустите узел.
  4. В предыдущем узле очень много информации. Нам надо отобрать только название новости и ее адрес. Заведите узел Set, и создайте текстовые поля Title, Date и Link.
  5. Положите в эти свойства соответствующие данные из RSS Read.
  6. Теперь надо настроить проверку — окончен ли цикл по батчам, или нет. Для этого добавьте узел IF и логическое поле Boolean с проверкой равенства Equal. В поле Value 1 надо проверить, закончился ли цикл, генерируемый Split In Batch. Для этого из справки копируем выражение {{$node["Split In Batches"].context["noItemsLeft"]}}.

    А в поле Value 2 включаем переключатель. Теперь, когда проверка на noItemsLeft станет true, цикл оборвется.
  7. Сдвиньте узел If немного ниже. И из второго выхода false проведите стрелку до входа в узел Split In Batches. Так вы создадите цикл. Запустите workflow, он должен остановиться после 3-го прохода цикла
  8. Теперь нам надо накопить данные из всех трех циклов в одном узле. Для этого подключите еще один узел Code к выходу true узла IF и добавьте в него код из блока перед этими упражнениями . Он будет читать данные из всех трех выполнений узла Set и соберет их в одном массиве
  9. С помощью узла Item Lists извлеките данные из-под свойства allData
  10. Запустите процесс целиком и посмотрите на результат

Отметьте все решенные задачи на странице шаблона упражнений Циклы и узел Split In Batches

Следующий урок → Чтение и запись в файл
Предыдущий урок → Маршрутизация данных и узел Switch
К курсу → Автоматизация с n8n: теория и практика
Мои курсы выходят в открытый доступ!