メインコンテンツまでスキップ

ループ

n8n におけるループ

複数のアイテムを処理したり、特定の操作を繰り返す必要がある場合(例:連絡先リスト内の各連絡先にメッセージを送信するなど)、ループは非常に役立ちます。n8n はこうした繰り返し処理を自動で行うため、ほとんどのケースではワークフロー内で明示的にループ構造を構築する必要はありません。ただし、いくつかの例外となるノードも存在します。

n8n でのループの使用方法

n8n のノードは任意の数のアイテムを入力として受け取り、処理後に結果を出力します。各アイテムは個別のデータポイント、またはノードが出力するテーブルの1行とみなせます。

Customer Datastore ノードの出力

通常、ノードは各アイテムに対して1回ずつ実行されます。たとえば、Customer Datastore ノードに含まれるすべての顧客の名前とメモを Slack にメッセージとして送信したい場合は、以下の手順で済みます:

  1. Slack ノードを Customer Datastore ノードに接続する。
  2. パラメータを設定する。
  3. ノードを実行する。

すると、5つのアイテムがあれば、Slack にメッセージが 5 件送信されます。

これが、n8n が明示的なループ構造を構築することなく、複数のアイテムを一括処理する仕組みです。

ループの作成

n8n は通常、すべての入力アイテムを自動的に繰り返し処理しますが、特定のシナリオでは手動でループを構築してすべてのアイテムを処理する必要があります。どのノードが自動的にすべてのアイテムを処理しないかについては、「ノードの例外一覧」をご参照ください。

条件を満たすまでループする

n8n ワークフロー内でループを作成するには、あるノードの出力を、それより前に配置されたノードの入力に戻すことでループを構成します。そして、ループを終了するタイミングを判断するために IF ノードを追加します。

以下は、IF ノードを使用してループを実装したサンプルワークフローです:

サンプルワークフローのエディタビュー

すべてのアイテムが処理されるまでループする

すべてのアイテムが処理されるまでループさせたい場合は、Loop Over Items ノードを使用します。各アイテムを1つずつ処理したい場合は、バッチサイズ(Batch Size)1 に設定します。

また、大量の入力データを処理する場合や、特定のバッチ単位で API レスポンスを処理したい場合にも、この方法でデータをバッチ処理できます。これにより、API のレート制限に引っかかるリスクを軽減できます。

Loop Over Items ノードは、すべての入力アイテムがワークフロー内の次のノードにバッチ単位で渡された時点で自動的に停止するため、ループを終了させるために IF ノードを追加する必要はありません。

ノードの例外

以下のノードおよび操作では、ワークフロー内で手動でループを設計する必要があります:

  • CrateDBinsert および update 操作は1回のみ実行されます。
  • Code ノード(すべてのアイテムに対して1回実行モード):入力されたコードスニペットに基づいてすべてのアイテムを処理します。
  • Execute Workflow ノード(すべてのアイテムに対して1回実行モード)。
  • HTTP Request:ページネーションのロジックを自分で処理する必要があります。API 呼び出しがページネーション付きの結果を返す場合、ループを構築して各ページのデータを取得する必要があります。
  • Microsoft SQLinsertupdatedelete 操作は1回のみ実行されます。
  • MongoDBinsert および update 操作は1回のみ実行されます。
  • QuestDBinsert 操作は1回のみ実行されます。
  • Redis
    • Info(情報):入力データに含まれるアイテム数に関係なく、この操作は1回のみ実行されます。
  • RSS Read:指定された URL に対して1回のみ実行されます。
  • TimescaleDBinsert および update 操作は1回のみ実行されます。