「関連レコード一覧」の値を、リアルタイムで集計したい場合は、Webhookを使うことで実現できます。
集計対象のレコードが追加(更新)されたタイミングで、集計アプリにて関連レコード一覧の集計をするカスタマイズをご紹介します。
Job Runnerを利用する前には、次の記事も併せてご覧ください。
Job Runnerを利用するとき、初めにすること : ジョブへのスロット割り当てについて
今回作成するWebhookカスタマイズの概要
今回作成するカスタマイズは、次のような流れで処理を行います。
「案件アプリ」にレコードが追加(更新)された時のWebhookにより、起動
上記レコードをもとに、「案件アプリ」から同じ顧客コードのレコードをすべて
取得
各種見積り金額の集計を実行(全案件・見積中・受注済み)
「案件アプリ」に追加された顧客コードと同じ顧客コードをもつ「集計アプリ」のレコードを更新
使用するアプリの構成
今回のカスタマイズを作成するのに必要なアプリの構成は次の通りです。
案件アプリ
フィールドを次のように用意します。
※フィールド名とフィールドコードは同一の値を指定しています。
また「関連レコード一覧」の集計を行うので、事前にいくつか案件のレコードを準備しておくと、わかりやすいです。
集計アプリ
フィールドを次のように用意します。
※フィールド名とフィールドコードは同一の値を指定しています。
「関連レコード一覧」のキーが「顧客コード」となるので、事前に
「顧客コード」および「顧客名」の値を準備しておきましょう。
APIトークンの設定
続いて、各アプリにて以下の権限で API トークンを作成しておきます。
Webhookの作成
ここからはkintoneアプリのWebhookカスタマイズを作成していきます。
はじめに、新規のカスタマイズ作成から、kintoneアプリのWebhookを選択します。
次に新規Webhookのアプリ選択の画面から、Webhookを設定するアプリを選択します。
ここでは、「案件アプリ」にレコードが追加・編集されたときに、カスタマイズを動かしたいので、「案件アプリ」を選択します。
kintone 接続設定を行う
kintoneアプリのWebhookを新規に作成すると、
やること「kintone接続設定を行う」、条件「Webhook を開始した時」が初期状態でセットされます。
また、今回は2つのアプリを操作しますので、接続設定を2つ設定しています。
2つ目以降の接続設定に関しては、やること「kintone接続設定を行う」、条件「他のアクションの実行が完了した時」を使います。
アクション番号2番では、「集計アプリ」を接続設定します。
Webhook から渡されたレコードを取得する
ここでは「Webhook から渡されたレコードを取得する」を使用し、Webhookが実行された「案件アプリ」のレコードを取得しています。
案件アプリの集計対象レコードを取得する
合計値を集計するための前段階のアクションとなります。
やること「条件を組み立ててレコードを取得する」、条件「レコード1行が準備できた時」を使います。
これは、「Webhook から渡されたレコードを取得する」で取得したレコードの、「顧客コード」と同じ「顧客コード」をもつ「案件アプリ」のレコードを取得したいので、条件は「レコード1行が準備できた時」を使います。
なお、「レコード取得アクション」は、アクション番号3番の「Webhook から渡されたレコードを取得する」を指定します。
ここでは、アクション番号3番で取得したレコードの「顧客コード」と、同じ「顧客コード」をもつレコードを、案件アプリから取得します。
そのため検索条件は、次のとおりです。
見積り金額の合計値を集計する
つぎに、アクション番号3番で取得したレコードの「顧客コード」と、同じ「顧客コード」をもつ「案件アプリ」のレコード全体の、「見積り金額」を集計します。
ここでは、「条件を組み立ててレコードを取得する」で取得したレコードが全て取得完了した状態で、合計値を算出します。
そのため、やること「レコード中のフィールド合計値を計算する」、条件「レコード全行が準備できた時」を使用します。
なお、「レコード取得アクション」は、アクション番号4番の「条件を組み立ててレコードを取得する」を指定します。
条件ごとの見積り金額の合計値を集計する
先ほどのように、取得したレコードから見積り金額の集計をするのですが、
つぎは案件ステータスの値(見積中・受注)ごとに集計するカスタマイズになります。
やること「レコード内の条件に合う行のフィールド合計値を計算する」、条件「他のアクションの実行が完了した時」を使います。
6番のアクションでは、アクション番号3番で取得した「案件アプリ」のレコードの「顧客コード」と、同じ「顧客コード」をもつ「案件アプリ」のレコードのなかで、案件ステータスが”見積中”の「見積り金額」だけを集計しています。
そのため、「レコード」はアクション番号4番の「条件を組み立ててレコードを取得する」を指定します。
7番のアクションも同様に、アクション番号3番で取得したレコードの「顧客コード」と、同じ「顧客コード」をもつレコードのなかで、案件ステータスが”受注”の「見積り金額」だけを集計しています。
こちらも、「レコード」はアクション番号4番の「条件を組み立ててレコードを取得する」を指定します。
集計した結果を「集計アプリ」のレコードに更新する
最後に、アクション番号5番、6番、7番で集計した結果を、「集計アプリ」に追加・更新していきます。
やること「キーの値をもとにレコードを更新する」、条件「他のアクションの実行が完了した時」を使います。
キーとなるフィールドには、顧客コードごとの集計をおこなっているため、「顧客コード」を指定します。また、キーの値も同様で、3番のアクションで取得した「顧客コード」を指定します。
マッピングにはそれぞれ集計した「見積り金額」の結果をいれていきます。
全案件合計のフィールドに、アクション番号5番
受注済み案件合計のフィールドに、アクション番号7番
見積中案件合計のフィールドに、アクション番号6番
カスタマインの設定は以上で完成です。
kintoneに登録して、実際に実行してみましょう。
Webhook を kintoneアプリに登録
最後に、Webhookをkintoneアプリに登録していきます。
画面上部「ジョブ生成・設定」ボタンをクリックし、「Webhook設定」タブのURLをコピーします。
コピーしたURLを、kintoneアプリの設定の中にある、Webhookに登録します。
(ジョブ設定画面下部の「kintoneのWebhook設定画面へ」から次の画面を表示することができます。)
「+追加する」をクリックし、Webhookを追加しましょう。
通知を送信する条件は、案件アプリにレコードが追加・編集される度に、集計アプリで集計を行いたいので、「レコードの追加」と「レコードの編集」とします。
このWebhookを有効にするチェックもわすれないようにしましょう。
この設定を保存して、kintoneの「アプリの設定」画面で「アプリを更新」した後、このアプリにレコードを追加してみましょう。
集計アプリの関連レコードは、正しく集計されていますでしょうか?
おわりに
今回は2つのアプリを使用して、「関連レコードの値を集計する」カスタマイズを作成してみました。
レコードが追加・編集される度(リアルタイム)に集計したい処理については、Webhookを使って頂くのがおすすめです。
また、今回は合計値を計算するカスタマイズをご紹介しましたが、
「レコード中のフィールド平均値を計算する」や「レコード中の条件に合う行数をカウントする」といったように平均値や、行数のカウントなどの集計も可能です。
なおレコードの行数のカウントをして集計したい場合は、記事「はじめてのWebhookカスタマイズ : 関連レコードの集計」を参考にしていただければと思います。
ぜひ、集計したい項目にあわせてお試しください。
ご不明点等ございましたら、チャットにてご質問ください。