はじめに
この記事では、一覧画面にボタンを設置し、ボタンを押したときに一覧の条件に一致する全レコードのレコードごとの関連レコードの合計値を集計するカスタマイズをご紹介します。
関連レコード一覧の集計は非常にご要望の多いカスタマイズで、これまでもいくつかの記事を公開しています。用途に合わせてご覧ください。
詳細画面で関連レコードを集計し、スペースに表示する → 【関連レコード一覧を集計する】
レコード追加(更新)時にWebhook通知を使用し、関連レコードを集計してフィールドにセットする → 【 はじめてのWebhookカスタマイズ : 関連レコードの集計】
更新専用の一覧を使用して関連レコードを集計する → 【更新専用の一覧を使って関連レコードの集計を一括で行う方法】
「リストから要素を取り出す」を使用したループ処理で関連レコードを集計する → 本記事
そしてこの記事で紹介する手法は「リストから要素を取り出す」という「やること」を使用します。
この「やること」については、次の記事も参考になるので、あわせてご覧ください。
「リストから要素を取り出す」の活用方法
アプリ構成と実現する内容
kintone アプリストアにある「営業支援パック」を使用します。このうち、「顧客管理」アプリには「関連レコード一覧」フィールドが配置されていて、「案件管理」アプリのレコードを表示する設定が既にされている状態で入手できるためこれを使用します。
そして今回実現させる内容は、以下のように「顧客管理」アプリに予め設定されている「案件一覧」関連レコード一覧内の「合計費用」フィールドを集計することです。
なお、集計結果を格納するための「全案件合計金額」フィールド(数値)は「顧客管理」アプリを入手した段階では設定されていないので、別途追加しておきます。
※フィールド名とフィールドコードは同じものを設定しています
※入手したアプリに既に設定されているフィールドとは別に今回のカスタマイズのために追加するフィールドのみ記載しています
「案件一覧」関連レコード一覧の設定は次の通りです。
なお、kintone アプリストアから「案件一覧」関連レコードが設定された状態で「顧客管理」アプリを入手するのですが、カスタマイズの設定をわかりやすくするため「表示するレコードの条件」を顧客名に変更しています。(初期設定は「レコード番号」になっています)
カスタマイズ作成
ボタンの配置と読み込み中画面の表示を行う
「顧客管理」アプリにカスタマイズを作成していきます。
まずは一覧画面にボタンを設置します。
続いて、このボタンを押したときに読み込み中画面を表示します。
この「読み込み中画面を表示する」は無くても集計処理自体は可能ですが、処理時間が長くなった場合にユーザーが誤ってブラウザを閉じてしまうことなどを防ぐために設定することをおすすめします。
レコードを取得する
次に、集計対象となるレコードを取得する処理です。
今回は一覧の条件に合致するレコードを処理したいので「一覧の条件でレコードを全件取得する」を使用しています。
なお、「条件を組み立ててレコードを取得する」や「全レコードを取得する」など、レコードを取得する「やること」はいくつか種類があるので、要件に合うものを選んでお試しください。
1レコードずつ更新処理を行う
続いて、アクションを繰り返す処理の部分について解説します。
アクションを繰り返すループ処理を行うには、やること「リストから要素を取り出す」、条件「いずれかのアクションの実行が完了した時」、「リストから要素を取り出した時」を使用します。
これにより $3 の結果の数(= アクション3番で取得したレコードの件数分)だけアクション5~7の処理(やること「キーを指定してレコードを取得する」、「レコード中のフィールド合計値を計算する」、「レコードを更新する(キーの値を直接指定)」)が行われます。
各アクションについても具体的に見ていきましょう。
リスト(取得したレコード)から取り出した1レコードの関連レコードを取得する
まず、アクション3番で取得したレコードから取り出した1レコードの関連レコードを取得します。
「リストから要素を取り出す」で、アクション3番で取得したレコードを1レコードずつ取り出し、その取り出したレコードのフィールド値を使用して関連レコードを取得します。
関連レコードの取得なので、「関連レコード一覧の条件でレコードを取得する」を使いたいところですが、この「やること」は一覧画面では使用できません。
そのため、ここでは「キーを指定してレコードを取得する」を使用して関連レコードを取得します。
「案件一覧」関連レコードを取得するには、「案件一覧」関連レコードのフィールド設定(以下にて再掲)を参考に「キーを指定してレコードを取得する」のパラメーターを設定します。
具体的には、案件管理アプリからアクション4番で取り出したレコードの顧客名をキーにレコードを取得します。これにより、3番で取得したレコード1件ずつの「案件一覧」関連レコードを取得できます。
関連レコードの対象フィールドを集計する
次に、関連レコードの対象フィールドを集計します。
「レコード中のフィールド合計値を計算する」を使用して、関連レコードの対象フィールドを集計します。
集計結果をセットしてレコードを更新する
そして計算結果をセットしてレコードを更新します。
「レコードを更新する(キーの値を直接指定)」を使用して集計結果をセットし、レコードを更新します。集計結果をセットするのは、別途追加しておいた「全案件合計金額」フィールドです。
また、更新するレコードはリストから取り出したレコードになります。「リストから要素を取り出す」で取り出したレコードのレコード番号をキーに指定するので、ここでは「キーの値」には次の式を記述します。
= $4.レコード番号
なお、「= $1.フィールドコード」のような式は基本的には入力補助の 他のアクションの結果 や フィールド選択 だけでは入力できず、手入力する必要がありますので打ち間違いにはご注意ください。
処理が終わったので読み込み中画面を終了する
そしてその繰り返し処理が終了したら読み込み中画面を終了します。
やること「読み込み中画面を終了する」、条件「リストからの取り出しが終了した時」を使用します。
ダイアログを表示し、画面をリロードする
最後に、ダイアログで集計が終わったことを表示し、画面をリロードします。
これは、集計が完了したことをユーザーにわかりやすくするため、やること「情報ダイアログを表示する」と「画面をリロードする」により集計結果を表示されている画面に反映するために設定しています。
アクショングラフ
今回のカスタマイズでは以下のようなアクショングラフとなります。7番のアクションのあとに4番に戻り繰り返し処理が行われていることがわかります。
カスタマイズ全体像
カスタマイズの全体像はこちらになります。
まとめ
以上の設定により、一覧画面で関連レコードの集計が可能となります。
このように「リストから要素を取り出す」を活用することで、複数のレコードに対する一括処理を作成できるので、是非お試しいただければと思います。
ご不明点等ございましたら、チャットにてご質問ください!
Customineドキュメントやサポートページも、ぜひご活用ください。