> ## Documentation Index
> Fetch the complete documentation index at: https://help.teable.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# ループ（一括）

> 配列を反復処理し、1つのアクションで複数の項目を処理します

<Tip>
  「スクリプトを実行」は、手動で構築する必要があるものも含め、すべてのアクションの動作を実現できるため、オートメーションの構築に使用することを強く推奨します。チャットで要件をAIに説明するだけです。

  アクションを手動で追加した場合、後からAIが認識または変更することはできません。
</Tip>

ループを使用すると、配列の**各項目につき一度**アクションを実行できます。1件のレコード処理や1通のメール送信ではなく、一覧の各項目に対してアクションを繰り返し、レコードの一括作成、連絡先ごとのメール送信、項目ごとのAPI呼び出しを行えます。

項目は順番に処理され、すべての反復結果が配列として返されるため、後続ステップで利用できます。

## 対応するアクション

| アクション     | ループ対応 |
| --------- | ----- |
| レコードを作成   | はい    |
| レコードを更新   | はい    |
| メールを送信    | はい    |
| HTTPリクエスト | はい    |
| AI生成      | はい    |

## 配列の取得元

ループを使用するには、入力となる配列が必要です。一般的な取得元は次のとおりです。

| 取得元                    | 得られるデータ                          |
| ---------------------- | -------------------------------- |
| **レコードを取得**アクション       | テーブルへのクエリから得られたレコードの配列           |
| **Webhookを受信したとき**トリガー | JSON本文に注文品目の一覧などの配列が含まれる場合があります  |
| **AI生成**アクション（JSON出力）  | AIが構造化された項目の配列を返せます              |
| **HTTPリクエスト**アクション     | 配列を含むAPIレスポンス                    |
| **スクリプト**アクション         | `output.set()` を使用して任意の配列を出力できます |

## 設定方法

1. 対応するアクション（「レコードを作成」、「メールを送信」など）を開きます。
2. テーブル選択の下、またはアクション設定領域にある**ループ実行**をクリックします。
3. データソースの選択画面で、前のステップの**配列変数**を選びます。たとえば、「レコードを取得」ステップのレコード配列です。
4. フィールドマッピング領域に、配列全体ではなく各項目のプロパティが表示されます。**+** をクリックし、現在のレコードの名前、メール、ステータスなど、**現在の項目**のプロパティを参照します。
5. アクションを保存します。ワークフローの実行時、配列の項目ごとにアクションが一度実行されます。

## 現在の項目を参照する方法

ループが有効な場合、**+** の変数選択に現在処理している項目のプロパティが表示されます。例：

* 「レコードを取得」の出力をループする場合、`現在の項目 → フィールド → 名前`、`現在の項目 → フィールド → メール`などを参照できます。
* Webhookの配列をループする場合、`現在の項目 → product_name`、`現在の項目 → quantity`などを参照できます。

配列全体または特定のインデックスを参照する、ループなしのモードとは異なります。

## 具体例：期限切れタスクのリマインダーメールを送る

1. **トリガー：** 毎日午前9時の指定時刻。
2. **アクション1：** レコードを取得 — タスクテーブルから、期限が今日より前、かつステータスが「完了」ではないレコードを絞り込みます。
3. **アクション2：** **ループ**を有効にしたメールを送信。データソースはアクション1のレコード配列です。
   * **宛先：** 現在の項目の担当者メールフィールド。
   * **件名：** `リマインダー：「{{current item → Task Name}}」は期限切れです`
   * **本文：** `{{current item → Assignee Name}}様、タスク「{{current item → Task Name}}」の期限は{{current item → Due Date}}でした。更新してください。`

結果：期限切れタスクごとに個別のメールが1通送信されます。

## HTTP配列本文

HTTPリクエストアクションでは、ループに特別な**配列本文**モードがあります。項目ごとにHTTPリクエストを送信する代わりに、**配列全体を1つのJSON配列**として1回のリクエストで送信します。項目ごとの送信より高速で、レート制限にも達しにくくなります。

外部APIが一括操作に対応している場合（1回のAPI呼び出しで複数レコードを作成する、分析サービスへイベントを一括送信するなど）に役立ちます。

配列本文を使用するには：

1. HTTPリクエストアクションでループを有効にします。
2. デフォルトの項目ごとのモードではなく、**配列本文**モードを選択します。
3. 配列全体がJSON配列としてシリアライズされ、リクエスト本文で送信されます。

## パフォーマンス上の注意

* ループは項目を並列ではなく**順番に**処理します。100項目のループには、1回の実行の約100倍の時間がかかります。
* 数百、数千項目の大きな配列では、外部アクションが一括入力に対応しているか確認します。APIが対応する場合はHTTP配列本文を使用します。
* 「レコードを取得」の出力をループし、レコードごとにHTTPリクエストを行う場合は、外部APIのレート制限に注意します。
* 非常に大きなデータセットでは、「レコードを取得」のページネーション（スキップ／取得）を使用して作業を小さなバッチへ分割し、複数回オートメーションを実行することを検討します。

## 使用例

* **レコードを一括作成する。** あるテーブルからレコードを取得し、ループして別のテーブルに対応するレコードを作成します。
* **一覧の各連絡先へ個別メールを送る。** 連絡先一覧を取得し、ループしてそれぞれにカスタマイズしたメールを送ります。
* **複数のレコードを更新する。** 条件に一致するレコードを取得してループし、各レコードを更新します（期限切れタスクをすべて「エスカレーション済み」にするなど）。
* **レコードごとにAPIを呼び出す。** 各レコードのデータを1件ずつ外部システムへ送ります。
* **一括レコードをAIで処理する。** レコードをループし、AI生成で各レコードの分類、要約、データ抽出を行います。

## ヒント

* ループを有効にする前に、必ず配列のサイズを確認します。「レコードを取得」が1,000件を返すと、ループも1,000回実行されます。
* オートメーションを開始したテーブルと同じテーブルでレコードを作成・更新する場合は、再実行に注意します。トリガーにフィルターを設定してループを防ぎます。
* すべての反復結果は後続ステップで配列として利用できますが、非常に大きなループでは配列も大きくなります。必要なデータだけを参照してください。

## 関連ページ

* [レコードを取得](/ja/basic/automation/actions/records/get-records) — ループで最も一般的な配列の取得元です
* [レコードを作成](/ja/basic/automation/actions/records/create-record) — ループ内でレコードを一括作成する際によく使用します
* [HTTPリクエスト](/ja/basic/automation/actions/logic/http-request) — ループ内で項目ごとにAPIを呼び出す際によく使用します
* [メールを送信](/ja/basic/automation/actions/communication/send-email-overview) — ループ内でメールを一括送信する際によく使用します
