Repeat whileループ
Repeat whileループは、ステップのブロック内のアクションを少なくとも1回実行し、条件が満たされている間は反復を続けます。 このタイプのRepeat制御ステートメントは、do-whileループとも呼ばれます。条件が満たされている間に、1つ以上のアクションを実行します。
レシピにRepeat whileループを挿入するには、レシピエディターで+(プラス)ボタンをクリックして新しいステップを追加し、Repeat whileを選択します。
Repeat whileを選択
Workatoは、条件が満たされている間に実行するアプリとアクションを設定できるステップのブロックをレシピに追加します。
詳細な手順については、Repeat while条件付きループの作成方法を参照してください。
Repeat whileループ
Repeat whileループは、次のようなユースケースで使用できます。
- オフセット値または次ページトークンを使用してデータのページを取得する
- 1つ以上のアクションを固定回数実行する
- 特定の条件が満たされるまで、1つ以上のアクションを繰り返す
ループ反復回数の制限
Repeat whileループは、ステップを最大50,000回繰り返します。 この制限は、タスクの制御不能な消費を防ぐための防御策です。 設定した条件によって、必要なときにループを終了できることを確認してください。
たとえば、変数がtrueである間にアクションを繰り返す条件を設定しても、変数をfalseに変更するロジックを含めない場合を考えます。 この場合、ループを終了できず、その結果、反復回数の上限に達します。
Repeat while条件付きループの作成方法
Repeat whileループを作成するには、次の手順が必要です。
- ステップ1: 繰り返すアクションを定義する(REPEAT)
- ステップ2: 確認する条件を定義する(WHILE)
アクションは少なくとも1回実行されます
Repeat while条件付きループはdo-whileループの一種であるため、ループ本体を少なくとも1回実行します。 その後、条件が満たされているかどうかを確認し、満たされている場合はループ本体が再度実行され、このサイクルが繰り返されます。
ステップ1: 繰り返すアクションを定義する
Workatoアカウントにサインインします。
プロジェクトに移動します。
新しいレシピを作成するには、Create > RecipeをクリックするかC+Rを押します。または、既存のレシピをクリックしてEdit recipeを選択します。
新しいステップを追加するには、Actionsの下にある+(プラス)ボタンをクリックします。
Repeat whileを選択します。
Repeat whileを選択
Workatoはステップのブロックをレシピに追加し、Select an app and actionステップを自動的に選択します。
Repeat whileループでアプリとアクションを選択
繰り返す予定のアプリケーション、コネクション、アクションを選択します。
アクション設定で関連フィールドに入力します。
ステップ2: 確認する条件を定義する
レシピエディターでSet up condition to repeat stepsを選択します。
Repeat whileループでステップを繰り返す条件を設定
Recipe dataインターフェイスからデータピルを選択するか、Data fieldに値を手動で入力します(例: インデックスデータピル)。
Repeat whileループのデータフィールド
Conditionドロップダウンメニューから条件を選択します(例: less than)。
Recipe dataインターフェイスからデータピルを選択するか、Valueフィールドに値を手動で入力します(例: 4)。
任意. Valueフィールドの下にある+(プラス)をクリックしてWHILE条件を追加し、次の論理演算子のいずれかを選択します。
- AND: ループを続行するには、すべての条件を満たす必要があります。
- OR: ループを続行するには、いずれかの条件を満たせば十分です。
複数の条件を追加できますが、すべて同じ論理演算子を使用する必要があります。
Repeat whileループでステップを繰り返す追加条件を設定
ユースケースと例
Repeat while条件付きループは、次のような複数のループパターンをサポートします。
- オフセットを使用してデータのページを取得します。 詳細と例を参照してください。
- 次ページトークンを使用してデータのページを取得します。 詳細と例を参照してください。
- アクションを固定回数実行します。 詳細と例を参照してください。
- 特定の条件が満たされるまで、1つ以上のアクションを繰り返します。 詳細と例を参照してください。
オフセットを使用してページを取得する
オフセットによるページネーションをサポートするアクションでRepeat whileループを使用できます。 これにより、各反復で返す結果を指定して、データのページを取得できます。 取得するデータがなくなると、ループは終了します。
オフセットを使用してページを取得するには、ループの反復回数を自動的に追跡し、REPEATステップの出力で提供されるインデックスデータピルを使用する必要があります。
オフセットを指定するには、インデックスデータピルにページサイズ(ページごとに返される項目数)を掛けます。
たとえば、ページサイズが100の場合、Page offsetをIndex*100に設定できます。ここで、Indexはインデックスデータピルです。
ループのインデックスにページサイズを掛けてオフセットを定義
取得した項目のリストサイズが0より大きい間にループを実行するように設定して、データのすべてのページを取得するようにします。
オフセットを使用してページを取得するには:
Workatoアカウントにサインインします。
プロジェクトに移動します。
新しいレシピを作成するには、Create > RecipeをクリックするかC+Rを押します。または、既存のレシピをクリックしてEdit recipeを選択します。
+(プラス)ボタンをクリックし、Repeat whileステップを選択します。
ループブロックで、繰り返す予定のアクションを設定します。 アクションのPage offsetフィールドでオフセットを指定するには、REPEATステップの出力で提供されるインデックスデータピルを使用し、それにページサイズを掛けます。
ループ本体のWHILEステップで条件を設定し、取得したデータのリストからのリストサイズデータピルが0より大きいかどうかを確認します。 該当する場合、取得するデータがさらにあり、ループが繰り返されます。
Repeat whileブロックで条件を設定
例
Repeat whileループを使用して、オフセットでページネーションされるWorkato FileStorage検索からすべての結果を取得できます。
オフセットによるページネーションを使用するRepeat whileの例
FileStorageオフセットの手順例
レシピを作成し、Trigger on a specified scheduleなどのトリガーを設定します。
+(プラス)ボタンをクリックし、Repeat whileをクリックします。 WorkatoはRepeat whileブロックを追加し、Select an app and actionステップを強調表示します。
Workato FileStorageコネクターとSearch filesアクションを選択します。
次のフィールドに入力します。
- Directory pathを、検索する予定のディレクトリのパスに設定します。
- File nameを、その名前のファイルを取得するための目的のパターンに設定します。
- Page sizeを、ページごとに取得する結果数に設定します。
- Page offsetを、インデックスStep 2データピルにページサイズを掛けた値に設定します。 インデックスStep 2データピルは、REPEATステップの出力で確認できます。
オフセットによるページネーションを使用するFileStorage検索の入力例
ループ内の+(プラス)を選択し、Repeat for eachをクリックします。 WorkatoはRepeat for eachブロックを追加し、Set up list to repeat steps for each itemステップを強調表示します。
Input listフィールドを、Search files出力からのファイルStep 3データピルに設定します。
Select app and actionステップを選択し、検索結果のページ内の各Workato FileStorageファイルに対して実行する予定のアクションを設定します。
たとえば、各ファイルの内容を取得するには、Workato FileStorageコネクターからGet file contentsアクションを選択し、File pathをFOR EACHステップの出力からのファイルパスStep 4データピルに設定します。
Set up condition to repeat stepsを選択します。
次のフィールドに入力します。
- Data fieldを、Search filesアクションの出力からのリストサイズStep 3データピルに設定します。
- Conditionを
greater thanに設定します。 - Valueを
0に設定します。
Repeat whileブロックで条件を設定
次ページトークンを使用してページを取得する
次ページトークンによるページネーションをサポートするアクションでRepeat whileステップを使用できます。 これにより、next_page_token変数を前回の反復の出力からの次ページトークンに設定して、データのページを取得できます。 取得する次のページがない場合(つまり、データがもうない場合)、ループは終了します。
next_page_token変数の初期値は空白にする必要があることに注意してください。たとえば、次ページトークンを使用するアクションのデータのすべてのページを取得するには、next_page_token変数が存在する(値がある)間に実行するようにループを設定します。
Workatoアカウントにサインインします。
プロジェクトに移動します。
新しいレシピを作成するには、Create > RecipeをクリックするかC+Rを押します。または、既存のレシピをクリックしてEdit recipeを選択します。
変数 by Workatoコネクターを選択し、次にCreate variableアクションを選択して、初期値を空白のままにしたnext_page_tokenという名前の文字列変数を作成します。
+(プラス)ボタンをクリックし、Repeat whileステップを追加します。
ループ本体で、繰り返す予定のアクションを設定します。 たとえば、アクションにNext page tokenフィールドがある場合、その値を次ページトークンデータピルに設定します。
+(プラス)ボタンをクリックし、Repeat whileループ本体でAction in an appをクリックします。
変数 by Workatoコネクターを選択し、次にUpdate variableアクションを選択して、next_page_token変数を次ページトークンデータピルの値に更新します。 この値は、ループ本体で設定したアクションの出力で確認できます。
Repeat whileブロックでnext_page_token変数を更新
ループブロックのWHILEステップで条件を設定し、next_page_tokenが存在する(値がある)かどうかを確認します。 値が存在する場合、取得するデータがさらにあり、ループが繰り返されます。
Repeat whileブロックで条件を設定
例
Repeat whileループを使用して、次ページトークンでページネーションされるGoogle Drive検索から結果のすべてのページを取得できます。
次ページトークンによるページネーションを使用するRepeat whileの例
Google Drive次ページトークンの手順例
レシピを作成し、Trigger on a specified scheduleなどのトリガーを設定します。
+(プラス)ボタンをクリックし、Action in an appをクリックします。
変数 by Workatoコネクターを選択し、Create variableアクションを選択して、初期値を空白のままにしたnext_page_tokenという名前の文字列変数を作成します。
+(プラス)ボタンをクリックし、Repeat whileをクリックします。 WorkatoはRepeat whileブロックを追加し、Select an app and actionステップを強調表示します。
Google DriveコネクターとSearch files or foldersアクションを選択します。
次のフィールドに入力します。
- Files or foldersをFilesに設定します。
- Folder IDを、検索する予定のフォルダに設定します。
- Queryを、検索に使用するクエリに設定します(例:
modifiedTime < '2023-12-22T12:00:00'で、午後12時より前に変更されたファイルを返します。 2023年12月22日)。 - Next page tokenを、作成したnext_page_tokenデータピルに設定します。
次ページトークンによるページネーションを使用するGoogle Drive検索の入力例
ループ内の+(プラス)ボタンをクリックし、Repeat for eachをクリックします。 WorkatoはRepeat for eachブロックを追加し、Set up list to repeat steps for each itemステップを強調表示します。
Input listフィールドを、Search files or folders出力からのファイルデータピルに設定します。
Select app and actionステップを選択し、検索結果のページ内の各Google Driveファイルに対して実行する予定のアクションを設定します。
たとえば、各ファイルをダウンロードするには、Google DriveコネクターからDownload fileアクションを選択し、FileをFOR EACHステップの出力からのIDデータピルに設定します。
Download fileアクションの後に新しいステップを追加するには、+(プラス)ボタンをクリックします。 これは、Repeat whileのREPEAT the following stepsブロックの_内側_、かつRepeat for eachのFOR EACHブロックの_外側_に配置する必要があります。
Repeat whileブロック内に新しいステップを追加
Action in an appを選択します。
変数 by Workatoコネクターを選択し、Update variableアクションを選択して、next_page_token変数を検索ステップの出力に含まれる次ページトークンデータピルの値に更新します。
Set up condition to repeat stepsを選択します。
次のフィールドに入力します。
- Data fieldを、作成したnext_page_tokenデータピルに設定します。
- Conditionを
is presentに設定します。
Repeat whileブロックで条件を設定
固定回数ループを実行する
固定回数ループは、指定した回数だけ反復します。 固定回数ループを実行するには、ループの反復回数を自動的に追跡し、REPEATステップの出力に含まれるインデックスデータピルを使用する必要があります。
インデックスの値が_目的の反復回数から1を引いた数_に達すると、ループは終了します。たとえば、アクションを正確に5回実行するには、インデックスが4未満である間に繰り返すようにループを設定します。
- Data field: インデックスデータピル
- Condition:
less than - Value:
4(目的の反復回数から1を引いた数)
Repeat whileブロックでインデックスデータピルを使用
アクションを_n_回実行するには、条件を_n - 1_の値よりless thanに設定します。
Workatoアカウントにサインインします。
プロジェクトに移動します。
新しいレシピを作成するには、Create > RecipeをクリックするかC+Rを押します。または、既存のレシピをクリックしてEdit recipeを選択します。
+(プラス)ボタンをクリックし、Repeat whileステップを追加します。
ループブロックで、繰り返す予定のアクションを設定します。
ループブロックのWHILEステップで条件を設定し、REPEATステップの出力からのインデックスデータピルが、目的の反復回数から1を引いた数(-1)よりless thanであるかどうかを確認します。 該当する場合、ループが繰り返されます。
たとえば、ループ本体のアクションを5回実行するには、次のフィールドに入力します。
- Data fieldをインデックスデータピルに設定します。
- Conditionを
less thanに設定します。 - Valueを
4に設定します。
固定回数ループを5回反復する条件を設定
例
固定回数ループを使用して、次ページトークンでページネーションされるGoogle Drive検索から結果の最初の5ページを取得できます。
固定回数ループと次ページトークンによるページネーションを使用するRepeat whileの例
Google Drive固定回数の手順例
次ページトークンループの例の手順に従います。ただし、最後のステップであるSet up condition to repeat stepsに到達したら、次のフィールドに入力します。
- Data fieldを、REPEAT the following stepsステップの出力からのインデックスデータピルに設定します。
- Conditionを
less thanに設定します。 - Valueを
4に設定します。
これにより、ループがGoogle Drive検索から結果の最初の5ページのみを取得するようになります。
固定回数ループを5回反復する条件を設定
条件が満たされるまでアクションを繰り返す
Repeat whileループを使用して、特定の条件が満たされるまで1つ以上のアクションを繰り返すことができます。 たとえば、レスポンスコードが200でない間、エンドポイントにHTTPリクエストを送信できます。 レスポンスコードが200になると、ループは終了します。
Workatoアカウントにサインインします。
プロジェクトに移動します。
新しいレシピを作成するには、Create > RecipeをクリックするかC+Rを押します。または、既存のレシピをクリックしてEdit recipeを選択します。
+(プラス)ボタンをクリックし、Repeat whileステップを選択します。
ループブロックで、繰り返す予定のアクションを設定します。
ループ本体のWHILEステップで条件を設定し、特定の要件が満たされているかどうかを確認します。 要件が満たされていない場合、ループが繰り返されます。
Repeat whileブロックで条件を設定
例
Salesforceで製品が作成されたときに、Stripeで製品の作成を試行するためにRepeat whileループを使用できます。 200ステータスコードが返されるか、リクエストが5回送信されるかのいずれか早い方まで、StripeにHTTPリクエストを送信するようにレシピを設定します。 この例では、反復回数の上限に達しないように固定回数ループを組み込んでいます。
条件が満たされるまで繰り返すRepeat whileの例
条件付きHTTPリクエストの手順例
レシピを作成し、開始点としてTrigger from an appを選択します。
Salesforceコネクターを選択し、New recordトリガーを選択します。
次のフィールドに入力します。
- ObjectをProductに設定します。
- Fields to retrieveを、Stripeに送信する予定のフィールドに設定します(例:
Product ID)。
+(プラス)ボタンをクリックし、Repeat whileをクリックします。 WorkatoはRepeat whileブロックを追加し、Select an app and actionステップを強調表示します。
HTTPコネクターを選択し、Send requestアクションを選択します。
Request nameをCreate product in Stripeに設定します。
リクエストURLとリクエスト本文を使用してアクションを自動的に設定するにはStart guided setupを選択し、RequestセクションとResponseセクションのフィールドを設定してアクションを手動で設定するにはSet up manuallyを選択します。
Mark non-2xx response codes as success?ドロップダウンメニューからYesを選択します。 これにより、エラーコードを受信した場合でも、レシピがループの実行を継続します。
Send request via HTTPアクションの後、WHILE条件の前に新しいステップを追加するには、+(プラス)ボタンをクリックします。
Repeat whileブロック内に新しいステップを追加
Action in an appを選択します。
スケジューラー by Workatoコネクターを選択し、次にWait for time durationアクションを選択します。
Intervalドロップダウンメニューから5 minutesを選択します。
Set up condition to repeat stepsを選択します。
次のフィールドに入力します。
- Data fieldを、Send requestステップからのステータスコードStep 3データピルに設定します。
- Conditionを
does not equalに設定します。 - Valueを
200に設定します。
Repeat whileブロックで条件を設定
WHILE条件セクションの下にある+(プラス)ボタンをクリックし、ORボタンを選択して別の条件を追加します。
次のフィールドに入力します。
- Data fieldを、REPEATステップの出力からのインデックスStep 2データピルに設定します。
- Conditionを
less thanに設定します。 - Valueを
4に設定します。
これらの論理OR条件により、成功したHTTPリクエストが1回発生するか、失敗したリクエストが5回反復されるかのいずれか早い方の後に、ループが終了します。
Repeat whileループの論理OR条件を設定
Last updated: