2022年5月26日リリースにて、カスタマインに新しいやること「リストから要素を取り出す」が追加されました。
使いこなせば非常に強力な「やること」なのですが、新しい概念なので詳しく解説したいと思います。
このページで概要を確認したあとは、より具体的なカスタマイズに進んでみてください。
「リストから要素を取り出す」の概要
「リストから要素を取り出す」は、文字通りリストから要素を1つ取り出す「やること」です。「いずれかのアクションの実行が完了した時」と組み合わせることで、リストにしたがって繰り返す動作、いわゆるループを簡単に作ることができるようになります。
これを用いると、従来Job Runnerで行っていた各種のレコード操作のカスタマイズを、画面のカスタマイズでも行うことが可能になります。
たとえばリストが [“A”, “B”, “C”] だとすると、
“A”
“B”
“C”
空
というふうに値を取り出すことができます。値を取り出したとき空になるのがリストの終わりの合図で、その後も繰り返すとまた初めから取り出されることに注意してください(場合によっては、この点には気をつけないと簡単に無限ループしてしまいますので、ご注意ください)。
まずはこの「リスト」をどのように作成するか、が問題になってきます。
パラメーターの「リスト」とは
リストには、以下のようなものを指定できます。
レコードを返すアクションの結果値
「取得したレコードを絞り込む」の結果値
「チェックボックスや複数選択の選択をひとまとめにする」などの「〇〇をひとまとめにする」の結果値
テーブル
ユーザー/組織/グループ選択フィールド値
チェックボックス/複数選択フィールド値
= [1, 2, 3] のような配列
上記のリストを findif 関数で絞ったリスト
これらを1要素ずつ順番に処理していく、いわゆるループ処理と言われるカスタマイズが作成可能です。
具体的なループするカスタマイズの作り方
それでは概要を説明しましたので、具体的なカスタマイズの方法に進みたいと思います。
まず簡単なところで、「保存したときに、選択されたユーザーに対してループ処理をする」という例を作成してみます。たった3行のアクションで構成されていますが、ループで必要なすべての要素がここに詰まっています。まずは設定内容とアクショングラフをじっくりと確認してみてください。
先にアクショングラフの方を解説します。
画面のカスタマイズでループを作る際には、突き詰めると必ずこの形になります。アクショングラフを見るとわかるように、アクション番号2番の条件「いずれかのアクションの実行が完了した時」の条件を持つアクションを起点に、ループが回ります。
このグラフを見ると2番から始まった矢印が一周回っていることが確認できると思います。何か思い通りに動かないことがあったら、まずこの形になっているかを必ず確認するように心がけてください。
次にアクションの解説に進みます。
アクション番号1番は、このループに入るべき条件をセットしています。さきほど確認したアクショングラフからもわかるように、ここはループの入口であり、ループの外側に位置するアクションとなります。
アクション番号2番がループの開始点になります。ほとんどのケースでは、やること「リストから要素を取り出す」と条件「いずれかのアクションの実行が完了した時」がセットで利用されます。「リストから要素を取り出す」を実行すると、取り出した値が空でなければ条件「リストから要素を取り出した時」が発生します(この例でいうと、次のアクション番号3番に進みます)。
条件として指定する「いずれかのアクションの実行が完了した時」では、ループの入口と末端のアクションを指定します。ここでは1つ上のアクション1番が入口で、3番が末端ですので、その2つを指定しています。
アクション番号3番が、ループの中で実際に行うアクションとなります。条件として「リストから要素を取り出した時」をセットしたアクション以降、アクションの結果値から取り出した要素を使うことができます。
ここでは$2(アクション2番)がユーザー選択なので、「$2.name」としてユーザーの表示名をコンソールに出力しています。
まとめ
カスタマインによる画面のカスタマイズに、新しい概念を導入する「リストから要素を取り出す」について解説しました。
ここでは説明を簡単にするため単にコンソールにメッセージを出力しているだけですが、取り出した要素を使って別アプリのレコードを取得/更新したり、ループ自体をネストしたりといろいろなことが実現可能ですので、ぜひいろいろ試してみてください。
もちろん、画面のカスタマイズで大量のレコードを取り扱うのは無理がありますので、そのようなカスタマイズについてはJob Runnerをご利用ください。
もしわからないことがございましたら、チャットサポートまでお気軽にお問い合わせください。