はじめに

kintoneアプリのカスタマイズで、一覧画面から各レコードの内容によってやることを変えたい、という要望はよくあるかと思います。


このような要望をgusuku Customineでカスタマイズを作成する場合、Job Runnerで行うのが簡単ですが、扱うレコード数が少なければ新しくリリースされた「リストから要素を取り出す」を活用すると、画面のカスタマイズでも実現することが可能です。今回はこのカスタマイズをご紹介します。


この「リストから要素を取り出す」というやることは2022年5月26日にリリースされた新しい概念であるため、はじめて使用される場合にはこちらの記事もご参照ください。


実現するカスタマイズの内容

今回は「リストから要素を取り出す」を使いこなす例題として、簡単な例からスタートし、いくつか機能を追加していこうと思います。


まずはじめに、以下のような内容を実現してみます。


  • 一覧ページにチェックボックスをつけて、レコードを選択する

  • 選択された各レコードの中身によって、別アプリにレコードを追加したり、別アプリのレコードを更新したりする


アクショングラフにすると、全体はこのような形になります。「リストから要素を取り出す」を使ったループ処理で典型的な形のグラフになっています。特徴的なのはグラフが二股に別れ、それぞれでループ処理がされているところですね。



ここまでのカスタマイズがうまくできたら、これをベースに、以下のような機能を追加してみます。


  • 全体の処理が終わったら「完了しました」ダイアログを表示

  • レコード追加時に添付ファイルのコピーを行う


ループ処理のカスタマイズはシンプルですが混乱しやすいので、落ち着いて段階を踏んでカスタマイズを進めていってください。


カスタマイズの作成

まずは処理対象のレコード取得

まずは一覧ページにチェックボックスをつけて、レコードを選択する部分のカスタマイズを作成します。



ここでは例としてチェックボックスをつけて「一覧で選択されたレコードを取得する」を使用していますが、レコードを取得する方法は何でも構いません。


たとえば表示されているレコードに対して処理したければ「一覧で画面に表示されているレコードを取得する」でも構いませんし、krewSheetで操作したレコードに対して処理したければ「krewSheetで保存しようとしているレコードを取得する」を使うことももちろん可能です。

用途に応じて、いろいろな方法でレコードを取得してみてください。


ループ処理その1

続いて、取得したレコードの内容によって処理を分ける、具体的なカスタマイズに進みます。

ここではまず、グラフの左側のループをこのように作成してみました。




やること「リストから要素を取り出す」と条件「いずれかのアクションの実行が完了した時」がセットで利用されているアクションがループの開始点になります。このパターンはループ処理では頻出しますので、覚えておくと良いと思います。


また、レコードを追加する際のマッピングでは、条件「リストから要素を取り出した時」をセットすることでリストから取り出した要素を使えるようになり、


$29.フィールドコード


のような書き方でマッピングのパラメーターとして利用できるようになります。


次に進む前に、まずこのループ処理が意図したとおりに動作しているか、kintoneアプリに登録して動作を確認してみてください。


ループ処理その2

次にグラフ右側の分岐のループを以下のように作成しました。こちらのほうも、パターンとしては同じです。ここでは”sample2”という値を持ったレコードについて、別のアプリに更新または追加を実行しています。



ここでは単純に「レコードを更新または追加する(キーの値を直接指定)」を使って、レコードの更新または追加を実現していますが、たとえば「キーを指定してレコードを取得する」でレコードを取得し、その結果を元に集計し…というようなカスタマイズももちろん可能です。この記事の後半では、添付ファイルをコピーするカスタマイズを作成していますので、参考にしてみてください。


カスタマイズをkintoneに登録し、ループ処理その1とその2がそれぞれ意図したとおりに動作しているか、確認してみてください。

リストから取り出した要素の値を使ってレコードを取得したり、その結果を集計したりすることが可能ですので、どんどんアイデアが膨らみますね!


カスタマイズの改善

完了ダイアログの表示

ひととおり動作が確認できたら、少し使い勝手を改善してみましょう。

たとえば、処理が終わった段階で「完了しました」ダイアログを表示するようなカスタマイズを作成してみます。



「リストから要素を取り出す」の結果がすべての要素をとりだしたあとは空になることを利用して、「他のアクションの実行が完了した時」+それぞれのアクションの結果が空の場合を完了の条件としています。


ここではダイアログを表示しているだけですが、時間がかかる処理であればたとえば分岐前に「読み込み中画面を表示する」を表示して、このタイミングで「読み込み中画面を終了する」を実行したり、ダイアログのあとに「画面をリロードする」で画面をリロードしたりと、お好みのカスタマイズを入れてみてください。


添付ファイルのコピー

最後に、レコードを追加する際に添付ファイルをコピーしてみます。考え方はいままでと同じで、取り出した要素を使ってレコードを取得し、そのレコードに対して処理を行う形になります。


前述のループ処理その1で紹介した、アクション番号29からの流れを少し修正します。



このように、「取得したレコードを絞り込む」で取り出したレコードを改めて絞り込み、「他レコードの添付ファイルをコピーする」でそのレコードから添付ファイルをコピーしています。

コピーした添付ファイルは、レコード追加の際にマッピングパラメーターとして設定します。

同じ考え方でテーブル内の添付ファイルもコピーすることもできますので、いろいろ試してみていただければと思います。


まとめ

いかがでしたでしょうか。画面のカスタマイズでも簡単にレコードの内容によって処理を変えるループ処理が、簡単に作成できることを実感して頂けましたでしょうか。


繰り返しになりますが、扱うレコード数が多い場合には、Job Runnerで行うほうがAPIリクエスト数の消費も少なく抑えることが出来ますし、カスタマイズも簡単です。用途に合わせてカスタマイズを作成していただければと思います。


もし分からないことがございましたら、各ドキュメントページをご確認いただくか、チャットサポートまでお問い合わせください。