同じ処理を複数回連続で実行したい場合にはループ処理を使う必要がある場合があります。
これまでループ処理は、「複数のレコードをテーブルごと別アプリに転記する」のように画面表示に処理→画面リロードを繰り返すループ処理や、「指定日付範囲をループしてレコード作成」のようにフィールド値変更時に処理→フィールド値変更を繰り返すループ処理がありました。
前者は1回処理するたびに画面リロードを行うので件数が多いと時間がかかる場合があり、後者は追加編集画面でしか使えないという欠点があります。
そこで今回は、条件「いずれかのアクションの実行が完了した時」が追加されたことにより可能になった、フィールドもリロードも必要としない、どの画面でも使えるループ処理をご紹介します!
Customineの基本的な事柄は、「はじめてのカスタマイズ」をご覧ください。
カスタマイズの概要
今回は一例として、入力ダイアログで繰り返し回数を入力すると、その数だけ情報ダイアログを表示する、というカスタマイズをご紹介します。
一覧画面に表示したボタンを押すと・・・
入力ダイアログが表示され、そこで回数を入力すると、
その回数だけ情報ダイアログを表示します。
これ自体は特に何かに役に立つというわけではありませんが、処理状況がわかりやすいので、このようにしています。
繰り返し回数を指定する方法や、繰り返される処理の内容を変更することで、以下のようなことが可能になります。
指定した数だけレコードを追加
取得したレコードを一つずつ更新していく
アプリ設定
特に必要なフィールド・設定はございません。
Customine設定
処理の流れ
各アクション解説
ループ処理の始まりとなる次のアクションへの繋ぎの役割をするとともに、入力ダイアログで入力された数値が1以上かどうかを判定する役割もになっています。ここでは何も実行する必要がないので、フィールド等に影響を与えない「ログインユーザーを取得する」を実行しています。
ループ処理の始まりとなるアクションです。上のアクションもしくはループ処理の最後のアクションが実行されればその後に実行されます。
「数値をフォーマットする」は本来の「数値を文字列に変換する」機能は使わず、単純に計算をさせるためにのみ使用しています。
計算式は「= 1+ if($278 = "",0,$278)」としています。この$278は後で出て来る278番のアクションの結果を意味しています。
ループ1周目の時点ではまだ278番は実行されていないので結果は空となります。そのままでは計算できないので0に変換して計算し、結果は1となります。
278番は281番のアクションの結果をそのままコピーするものなので、2周目以降は前回の281番の結果に1を足したものが新しい281番の結果として上書きされます。
情報ダイアログで「〇回目」と表示します。
この部分は、ループ処理で何を複数回実行したいかによって変更してください。ここで数種類のアクションを実行したい場合は並列で同時に実行するのではなく、直列で連続で実行するようにしましょう。
残りの実行回数を計算しています。
ここで次の周で参照できるように281番のアクションの結果をコピーしています。
ただし、残りが0回の場合は結果を0にしています。これはループ処理終了後に再度ボタンを押してループ処理を始めたときに278番に前の実行回数が残っていると、その数から始められてしまうからです。
次の周に進むかどうかを、276番で計算した残り実行回数を使って判定しています。
このアクションも次に進めるためのもので何も実行する必要はないので、他に影響を与えない「ログインユーザーを取得する」を実行しています。
このアクションの実行後に自動的に281番が実行され、次の周が始まります。
残り実行回数が0の場合はこのアクションは実行されません。
いかがでしたでしょうか?
今回ご紹介したループ処理はどの画面でも使用でき、画面リロードを使わないので処理が早いというメリットがあります。ただ、アクションの結果の参照が複雑でなかなか扱いが難しいと思います。
画面リロードを使ったループの方がこちらよりはシンプルな作りになるので、こちらが複雑すぎると思った方はまずは画面リロードを使ったループをお試しください。
ご不明点等ございましたら、チャットにてご質問ください!
Customineドキュメントやサポートページもぜひご活用ください。