rex0220 関連レコード集計プラグイン

kintone アプリの関連レコード集計プラグインです。

関連レコードの数値合計、最新日時などをプラグイン設定するだけで集計できます。
子アプリを変更時に、親アプリに集計結果を自動反映します。

- 追加・変更・削除時に、親アプリに自動集計
- 数値等の集計機能（sum, max, min, count, c_uniq）
- 文字列、日付等の集計機能（first, firsta, last, lasta）
- テーブル項目の集計機能
- 計算式の計算結果を集計可能
- 親アプリに関連レコード表示が無くても、集計可能
- 関連レコード集計を１０セット/アプリまで設定可能
- 既存レコードの集計機能
- APIトークン対応
- プラグイン設定のダウンロード＆アップロード機能

※動作環境は、PC・スマホです。


※参考　[関連レコード集計プラグインによるタイムカード月次集計](https://qiita.com/rex0220/items/97acb75b5e7ecb719e37)


[rex0220 stores](https://rex0220.stores.jp/)で、販売中です。

Ver.53
・APIトークン対応
　APIトークン利用時は、すべての集計先アプリのAPIトークン指定が必要です。
・ROWID 関数追加。テーブル行の id を取得


# 関連レコード集計プラグインの応用例

- [rex0220 関連レコード集計プラグイン 組織選択で集計](https://qiita.com/rex0220/items/0ed275a40199367c26c4)
- [rex0220 関連レコード集計プラグイン 組織選択で集計その２](https://qiita.com/rex0220/items/d707967350993f135871)
- [rex0220 関連レコード集計プラグイン 担当別売上集計](https://qiita.com/rex0220/items/658fba005dc5d1b56a11)
- [rex0220 関連レコード集計プラグイン 他アプリの完了をセット](https://qiita.com/rex0220/items/bfcb63ee6a889199b8a4)
- [rex0220 プラグイン設定画面で一覧情報取得時のエラー対応](
https://qiita.com/rex0220/items/2a176eb1240eac085987)

# 関連レコード集計の設定例

kintone アプリストアの「営業支援パック」をカスタマイズした例です。

- 顧客アプリに、案件アプリの集計と活動履歴の集計を行っています。

<img width="929" alt="2018-07-20_18h48_00.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/77f62c8e-4a06-d6e1-34be-5a65f48dabda.png">


- 案件アプリに、活動履歴の集計を行っています。

<img width="721" alt="2018-07-20_18h47_31.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/456bc049-5def-2470-8254-0e0be40babf2.png">


# 活動履歴を追加・変更した場合の自動集計

活動履歴アプリにレコード追加・変更した場合、顧客アプリ・案件アプリに自動集計されます。

<img width="1522" alt="2018-07-20_19h13_59.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/b1aeb0ad-e071-8476-c9a8-1334e4d7ad59.png">


# 案件アプリを追加・変更した場合の自動集計

案件アプリのプラン費用・オプション費用を修正した場合、顧客アプリに自動反映されます。
※スマホで、変更を行った場合の例です。

<img width="1162" alt="2018-07-20_20h11_24.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/a00cfd8f-ee53-bd34-9674-176848178932.png">


# 関連レコード集計プラグインの設定手順

「営業支援パック」のカスタマイズ例です。

## 集計先アプリに集計項目を追加

顧客アプリ・案件アプリに集計先項目を追加し、運用環境に反映します。

- 顧客アプリの例

<img width="1128" alt="2018-07-20_20h59_32.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/87bbec32-4c8c-2785-7e58-e303926ec662.png">

## 集計先項目を入力不可

集計先項目をマニュアル入力されるとまずいので、[kintone 項目入力不可プラグイン](https://qiita.com/rex0220/items/c0e7530df3f74e197df2)で、集計先項目を入力不可に設定します。

<img width="901" alt="2018-07-21_15h01_27.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/41cb0611-251a-4b53-1a17-d97da5a9d6f7.png">



## プラグインの追加

- 「kintone システム管理 > プラグイン」で追加します。
- 「アプリの設定 > プラグイン」で、アプリに追加します。

※今回の例では、案件アプリと営業履歴アプリにプラグイン設定を行います。

<img width="1123" alt="2018-07-20_21h08_00.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/3f892a56-f694-bb0a-daf2-50179f33ea28.png">


## プラグインの設定

### 案件アプリのプラグイン設定例

- NOTE： メモ
- 説明：　処理の説明等を記載
- プラグイン有効
- APIトークン：　APIトークンを利用時チェックして、自アプリのAPIトークンを指定
    - レコード閲覧権限を付与したAPIトークンを指定
 

関連レコード集計毎に、下記を設定します。

- 処理名：　処理内容
- アプリ：　集計先アプリ
- 対象アプリ条件：　集計先アプリのレコード抽出条件
- 集計条件：　集計元アプリのレコード抽出条件
- 集計順：　集計元アプリのレコード抽出順
- 集計項目：　集計先アプリの集計項目と集計内容
- テーブル項目：　集計先アプリのテーブル項目と集計内容
- APIトークン：　集計先アプリのAPIトークン
    - レコード閲覧、レコード追加、レコード編集権限を付与したAPIトークンを指定
    - ルックアップ項目を指定時は、ルックアップ元アプリのレコード閲覧権限を付与したAPIトークンをカンマ区切りで指定
    - テスト：　APIトークンでレコード取得REST API を実行

![2025-06-08_15h07_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/fd9eebdf-3b17-4b8b-8048-1913ef7cfc46.png)


- アプリ欄でダブルクリックすると、アプリの選択メニューが表示されますので、対象アプリ「顧客管理」を選択します
。
- アプリ番号またはアプリ名を入力すると、フィルタリングされます。


<img width="374" alt="2018-07-20_22h36_05.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/6fa9a0dd-7106-c65e-958e-c02891927cbe.png">

#### 対象アプリ条件

- 対象アプリ条件の「編集」ボタンをクリックすると、編集用ダイアログが表示されます。
- 「参照アプリの項目」欄でダブルクリックすると、項目の選択メニューが表示されますので、「レコード番号」を選択します

- OR条件の位置： OR条件の位置を指定します。
    - - : 「すべての条件を満たす」となります。（OR条件なし）
    - 2～10 : 指定値以降は、「いずれかの条件を満たす」となります。

例：今回は、顧客アプリ内の案件アプリ関連レコードで「表示するレコードの条件」と同じです。
顧客アプリの「レコード番号」と案件アプリの「顧客管理レコード番号（関連レコード紐付け用）」で関連付けしています。

<img width="829" alt="2019-09-19_06h39_30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/9066f465-1c81-6b02-0edf-893f38e05e6f.png">


- 「条件値」欄は、項目のフィールドコードまたは計算式を指定します。
- 定数

    - 文字： "" で、囲みます。<br>"株式会社", "個"

    - 数字： 数字をそのまま記述<br> 0, 123, 1000

 
- 項目：アプリ内項目のフィールドコードを指定します。
- 「:」（コロン）を入力すると、項目名が一覧表示されますので、項目を選択します。
- または、計算式を指定します。
※[計算式プラグイン](https://qiita.com/rex0220/items/ae83c6d5ce50ff7a9a73)と同じ計算式を入力できます。

<img width="553" alt="2018-07-20_22h52_47.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/bbccf47f-d584-ecad-bb86-7fcea785dbe2.png">


#### 集計条件

集計元アプリ（プラグイン設定アプリ）の集計条件を指定します。

- 参照アプリの項目：ダブルクリックで項目一覧表示
- 条件
- 条件値：項目または計算式

例：顧客管理レコード番号を指定
更新された案件アプリレコードの「顧客管理レコード番号（関連レコード紐付け用）」が同じレコードを集計します。

<img width="830" alt="2019-09-19_06h49_54.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/58b4a526-8890-dc89-e218-0f50e7f5d959.png">


#### 集計順

集計元アプリのレコード取得順を指定します。

- 項目：ダブルクリックで項目一覧表示
- ソート
    - asc：昇順
    - desc：降順

<img width="454" alt="2018-07-21_00h09_39.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/acd71bc5-3058-d457-d9f2-46c4e15936ac.png">



#### 集計項目

集計先アプリの集計項目と、集計元アプリの項目または計算式を指定します。

- 集計先レコードが無ければ追加： チェックなし
- 集計先項目
- 項目（計算式）
- 集計
    - sum：合計
    - max：最大値
    - min：最小値
    - count：カウント
    - c_uniq：一意の値の個数をカウント
    - first：先頭レコードの値
    - firsta：有効な値を持つ最初のレコード
    - last：最終レコード
    - lasta：有効な値を持つ最後のレコード
- 初期化：　集計元レコードが無い場合に「0」を設定
- レコード追加時に設定：　チェックなし

- 変数として、下記が利用できます。
    - $sno：　集計元レコードの処理番号


例：プラン費用合計の集計
顧客アプリの「プラン費用合計」に、案件アプリの「プラン費用」を合計（sum）します。

例：案件件数
顧客アプリの「案件件数」に、案件アプリのレコード単位に 1 をカウント（count）します。
※集計結果は、案件アプリの対象レコード数になります。

![2020-09-21_16h55_57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/583112e4-0feb-a208-f7fd-3e88633ac902.png)

#### テーブル項目

集計先テーブルを設定する場合に指定します。

- 有効：　チェックして、テーブルを選択します。
- To テーブル：　対象テーブルを選択します。
- From テーブル：　"-----":レコード または、テーブルを選択します。
- 集計：　レコード取得後に集計してテーブルに設定する場合に、チェック
    - 「集計」をチェックすると、集計キー、集計順、ソートキー、ソート順の入力欄を表示
- チェック：　設定項目を有効にします。無効の場合は、初期値を設定します。
- 識別ID：　レコード識別用の項目を指定します。チェックすると計算式に $id が自動セットされます。
- 項目（計算式）：　集計項目の計算式と同様です。
- 集計キー：　集計キーを番号で指定
    - 項目タイプは、数値、文字列、ドロップダウン、ラジオボタンを指定のこと
    - チェックボックス、複数選択、ユーザー選択等は、値が配列で集計・比較できません。
- 集計順：　asc: 昇順, desc: 降順
- 集計
    - sum：合計
    - max：最大値
    - min：最小値
    - count：カウント
    - c_uniq：一意の値の個数をカウント
    - first：先頭レコードの値
    - firsta：有効な値を持つ最初のレコード
    - last：最終レコード
    - lasta：有効な値を持つ最後のレコード
- ソートキー：　集計後のソートキーを番号で指定
- ソート順：　asc: 昇順, desc: 降順

- 変数として、下記が利用できます。
    - $sno：　集計元レコードの処理番号
    - $rno：　テーブルの行カウンター
    - $val：　ループ配列のループ値

![2021-08-15_21h16_20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/67086beb-6b98-c4d2-b97f-a9d5b06b2c71.png)

## APIトークンの指定例

APIトークンを利用する場合、APIトークンのチェックボックスをチェックし、各APIトークンを指定します。

- APIトークンのチェックボックス：　チェックで有効
- 自アプリのAPIトークン：　チェックボックス横に指定
    - レコード閲覧権限を付与したAPIトークンを指定
- 集計先アプリのAPIトークン：　集計先アプリすべての指定が必要
    - レコード閲覧、レコード追加、レコード編集権限を付与したAPIトークンを指定
    - ルックアップ項目を指定時は、ルックアップ元アプリのレコード閲覧権限を付与したAPIトークンをカンマ区切りで指定

![2025-06-08_21h46_17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/deb78afb-563f-41db-9554-e3806ddf4749.png)

- レコード閲覧、レコード追加、レコード編集権限を付与したAPIトークン作成例
    - APIトークン作成後に「アプリを更新」で運用環境に反映後、プラグイン設定画面で指定

![2025-06-08_22h00_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/603b7ae2-a3f8-4f00-b32d-0c90c5747797.png)


## テーブル項目の集計例

活動履歴を対応者別に集計し、最新対応日時順にソートして、テーブルにセット

![2021-08-15_19h00_38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/e3238353-8e2e-49e5-89c8-a016f8000481.png)



## 一覧画面の一括関連集計

一覧画面で関連レコード集計の一括関連集計ができます。
アプリ毎に 10,000 回/日 の API 発行制限がありますので、制限回数を超えないように対象レコードを絞って実行してください。

![2021-03-01_15h06_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/636cfed2-bb2d-5bdf-bb34-f51e47a25836.png)

### ボタン

一覧画面で表示するボタンについて設定します。

- チェック：　選択状態でボタンを表示
- デフォルト：　ボタン表示名
- 英語：　英語表記
- 日本語：　日本語表記
- 中国語：　中国語表記

![2021-03-01_15h08_46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/6246b1d7-4362-8b51-1ef0-c6176ad717bf.png)


### 一覧別設定

「一括計算ボタン」を表示する一覧画面を設定します。

- すべての一覧で有効：　チェックするとすべての一覧画面でボタンを表示
- チェック：　選択した一覧でボタンを表示

![2021-03-01_15h10_53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/b1145e2b-0296-939b-7269-615b638ae30a.png)

### 権限設定

「一括計算ボタン」を表示する権限を設定します。
ユーザー・組織・グループ単位で設定できます。

![2021-03-01_15h14_29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/271c224c-20f2-dc82-8940-2edfc52d54e0.png)


## 活動履歴アプリのプラグイン設定

こちらは集計先アプリが、顧客アプリと案件アプリになります。
同様にプラグイン設定を行います。

設定のポイント
最新の対応日時を取得するため、下記の設定を行います。

- 集計順を対応日時とレコード番号($id)の降順
- 最新対応日時の集計は first (先頭レコード) 

![2020-09-21_16h58_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/b5056e6d-ea78-b84d-444b-fc423a68eaee.png)


## チェックボックス、複数選択、ユーザー選択項目について

集計先が、チェックボックス、複数選択、ユーザー選択項目の場合、計算式で下記関数を指定してください。

<img width="679" alt="2018-07-24_17h29_29.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/e20de1b7-fdef-61a4-72be-9ca9985cb3fa.png">


- チェックボックス、複数選択項目は、ARRAY関数を指定

ARRAY(チェックボックス)
ARRAY(複数選択)

- ユーザー選択は、SEL_CODE関数を指定

SEL_CODE(ユーザー選択)


## テーブル内項目の計算

テーブル内の項目については、テーブル集計関数が使えます。

- テーブル内数値項目の合計

SUM(T数値)


# 既存レコードの更新

設定した集計方法で、集計先アプリの既存レコードを更新できます。
※「既存レコードを変更」では、集計先レコード追加は行いません。

- 集計先アプリと集計元アプリの全レコードを処理しますので、レコード数が多い場合は、１日の API 発行回数制限値（10,000回/1アプリ）をオーバーする場合があります。

案件アプリの「既存レコードの更新」
![2018-07-20_18h46_04.gif](https://qiita-image-store.s3.amazonaws.com/0/100572/40f55aac-691c-c4ea-c382-11fce417f3a1.gif)

活動履歴アプリの「既存レコードの更新」
![2018-07-20_18h41_42.gif](https://qiita-image-store.s3.amazonaws.com/0/100572/0bef803f-08fe-beeb-25d7-2f91abf233e6.gif)


# プラグイン設定のダウンロード

- プラグイン設定をダウンロードできます。
- 設定変更している場合は、変更後の設定が対象です。
- ブラウザ IE については、プラグイン設定のダウンロードの動作対象外です。

<img width="975" alt="2018-07-21_11h07_08.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/ab40af10-64e3-802a-2776-d13540401e94.png">

# プラグイン設定のアップロード

- プラグイン設定をアップロードできます。
- ブラウザ IE については、プラグイン設定のアップロードの動作対象外です。

<img width="975" alt="2018-07-21_11h07_56.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/7aa4e30a-1a85-188a-1b10-e7b9103b86d6.png">


<img width="977" alt="2018-07-21_11h08_12.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/b358b12d-fa41-fd1d-66bc-2427b5765450.png">



# 注意事項

- 既に、JavaScript によるカスタマイズを行っているアプリの場合、処理が競合して、エラーになる場合があります。その場合は、該当するアプリでプラグインの使用を中止してください。

# 活用例　予算・実績アプリ

予算アプリと実績アプリの集計も簡単に出来ます。


<img width="1080" alt="2018-07-25_10h00_26.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/d333b23f-dd5f-a5d7-13f5-40010c66dc9e.png">

- プラグイン設定

<img width="959" alt="2018-07-25_10h06_14.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/a890babb-b5fe-0f3b-62b4-5e908d884872.png">



- 標準の一覧で、予実績表示

<img width="634" alt="2018-07-25_09h46_56.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/4271d5d8-057d-8e7f-3b31-c2b1e37a747e.png">

- 標準のグラフ機能で予実績表示

<img width="1108" alt="2018-07-25_09h47_18.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/24857dd2-6e1e-790e-16be-0d21ed2783f4.png">