Iterator を使用するタイミング
| シナリオ | 例 |
|---|---|
| 検索結果を処理 | 見つかった各人物にメールを送信 |
| Webhook の配列を処理 | 各アイテムごとに順番にレコードを作成 |
| 一括更新 | 計算された値で複数のレコードを更新 |
| 通知 | イベントについて複数人に通知 |
Iterator の理解
Iterator は入力として配列を想定しています。 その後、次を実行します:- 配列から最初のアイテムを取り出す
- そのアイテムを使って Iterator 内のすべてのアクションを実行する
- 次のアイテムに進む
- すべてのアイテムが処理されるまで繰り返す
基本的なセットアップ
例: 検索結果の全員にメールを送信
目標: 特定の会社のすべての連絡先を見つけ、各人にパーソナライズされたメールを送信します。ステップ 1: レコードを検索
- 「Search Records」アクションを追加
- オブジェクト: People
- フィルター: Company が “Acme Inc” に等しい
- これにより、People の配列が返されます
ステップ 2: 結果の有無を確認
- 「Filter」アクションを追加
- 条件:
{{searchRecords.length}}が 0 より大きい - これにより、結果が空の場合の Iterator エラーを防止します
ステップ 3: Iterator を追加
- 「Iterator」アクションを追加
- 配列の入力:
{{searchRecords}}を選択 - これでループが作成されます
ステップ 4: Iterator 内にアクションを追加
Iterator の後に配置したアクションは、各アイテムに対して実行されます:- 「Send Email」アクションを追加(Iterator 内)
- 宛先:
{{iterator.currentItem.email}} - 件名: こんにちは
{{iterator.currentItem.firstName}}! - 本文: 現在のアイテムのフィールドを使用したパーソナライズメッセージ
結果
Search Records が 5 人を返した場合、Iterator は次を実行します:- 1 人目にメールを送信
- 2 人目にメールを送信
- … 5 人すべてに対して続行
現在のアイテムのデータにアクセスする
Iterator 内では、現在のレコードにアクセスするために{{iterator.currentItem}} を使用します:
| 変数 | 説明 |
|---|---|
{{iterator.currentItem}} | 現在のレコードオブジェクト全体 |
{{iterator.currentItem.id}} | レコード ID |
{{iterator.currentItem.email}} | メールフィールド |
{{iterator.currentItem.company.name}} | 関連する会社名 |
{{iterator.index}} | 配列内の現在の位置(0 始まり) |
よくあるパターン
複数レコードを更新
目標: 期限超過のタスクをすべて “Late” としてマークします。配列からレコードを作成
目標: 複数のアイテムを含む注文を Webhook が受信したら、各アイテムのレコードを作成します。ループ内の条件付き処理
目標: 有効なメールアドレスを持つ連絡先にのみメールを送信します。トラブルシューティング
”Iterator expects an array”
原因: 配列ではなく単一のレコードを渡しました。 対処: 単一のレコードではなく、Search Records の結果または配列フィールドを渡していることを確認してください。Iterator が実行されない
原因: 配列が空です。 対処: Iterator の前にフィルターを追加し、配列の長さを確認します:アクションが過剰に実行される
原因: Search Records が想定より多くのレコードを返しました。 対処:- Search Records により具体的なフィルターを追加する
- Search Records に上限を設定する(最大 200)
- 追加条件のために Iterator 内にフィルターを追加する
パフォーマンス上の考慮事項
- クレジット使用量: 各イテレーションでアクション実行分のクレジットを消費します
- 時間: 大きな配列は処理に時間がかかります
- 制限: 非常に大きな処理はバッチ化を検討してください
- レート制限: 繰り返しが多いと外部 API 呼び出しがレート制限に達する可能性があります
ベストプラクティス
- エラーを避けるため、Iterator の前に配列の長さを必ず確認
- すべてのアイテムを処理する必要がない場合はループ内にフィルターを追加
- 何をループしているか分かるように Iterator ステップの名前を変更
- 小さな配列でテストしてから大きなデータセットを処理する
- ワークフローの実行を監視して、イテレーションが想定どおりに完了することを確認する