rex0220 アプリ集計プラグイン

kintone で、複数アプリのレコードを１アプリに集計するプラグインです。
テーブル１行に他アプリの１レコードの内容を設定可能です。
・他アプリから当月分の請求データを抽出して、請求書を作成できます。
・関連レコードのレコードを集計して、項目に設定できます。

主な機能
・追加編集画面で、他アプリのレコードから集計（PC・スマホ）
・レコードを集計して、テーブルに設定する機能（PC・スマホ）
・一覧画面で表示中のレコードを一括集計（PCのみ）
・集計元アプリに更新結果を反映


※動作環境は、PC・スマホです。
※[関連レコード集計プラグイン](https://qiita.com/rex0220/items/8cbe764670b0e6431a42)が子アプリ変更時に親アプリへ集計するのに対して、
アプリ集計プラグインは、親アプリ側で子アプリのレコードを集計します。

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

Ver.60
・プラグイン設定で、関連レコード情報取得時エラーの対応
・FSIZE 関数追加。バイト数を適切な単位（B, KB, MB など）に変換し、カンマ区切り付きでフォーマット
　FSIZE(5000000) -> "4.8 MB"
・FILE 関数追加。添付ファイル項目の値を取得
　※イベントの種類により取得可能(追加・編集中のイベントでは取得不可)
　FILE(file, "key", 0) -> "nn.."
・FVAL, FIELDS_HTML 等の関数追加

Ver.59
・プラグイン設定で、対象アプリ選択時にルックアップ項目・関連レコード項目の参照アプリ指定機能追加
　別 kintone 環境のプラグイン設定のアップロード時に、アプリIDをルックアップ項目・関連レコード項目の参照アプリに変更する
・DIC_MAP 関数を追加
・EV_INFO 関数に、appId オプション追加
・APP_URL, LOOKUP_GETID, RELATED_GETID 関数追加
・TABLE_DATA, TABLE_MAP, TPDIC 関数追加
　TABLE_DATA(TABLE_MAP(テーブル1,
　TPDIC("ドロップダウンT2",ドロップダウンT1, "数値T2",数値T1, "金額T2", 単価T1*数量T1)))
・プラグイン設定画面初期処理でエラー発生時に、ダイアログ表示するように変更
・kintone.Promise を Promise に変更
 
# アプリ集計プラグイン使用例

- [rex0220 アプリ集計プラグイン 自アプリのテーブル集計](https://qiita.com/rex0220/items/ba3190b73c32ce917432)
- [rex0220 アプリ集計プラグイン テーブルから対象区分の数値を抽出](https://qiita.com/rex0220/items/e61bf0e2a9c61512ee2a)
- [rex0220 アプリ集計プラグイン テーブル初期設定](https://qiita.com/rex0220/items/f9f3490adccaf5293952)
- [rex0220 プラグイン 祝日チェック](https://qiita.com/rex0220/items/23045118eaa3a189f228)
- [rex0220 プラグイン 営業日数計算](https://qiita.com/rex0220/items/154b305cd2dae29c2b3d)
- [rex0220 アプリ集計プラグイン 翌月締日以降の営業日](https://qiita.com/rex0220/items/3413729acfb928586f08)

# 請求書アプリ例

受注・売上管理アプリから当月分の請求データを抽出して、請求書を作成する例です。
「アプリ集計」ボタンをクリックすると請求データを抽出・設定します。

- PC版編集画面 
<img width="1212" alt="2018-12-25_18h51_25.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/c3bdd78a-b96e-9e6e-ae4e-0cb139b4abb3.png">


- スマホ版編集画面
<img width="945" alt="2018-12-25_19h10_23.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/d761c632-85c4-e78b-393d-a48e4ab8dda7.png">


- 一覧画面一括集計

一覧画面で表示中のレコードを一括集計で最新の状態に更新します。
※新規にレコード追加する機能はありません。


<img width="807" alt="2018-12-25_19h40_32.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/e6df231b-5037-9585-668e-eba88cfae045.png">


## アプリ集計操作例

![2018-12-25_19h21_15.gif](https://qiita-image-store.s3.amazonaws.com/0/100572/e9bfb2f2-3620-7cee-0283-23c5c859a3c2.gif)


![2018-12-25_19h37_05.gif](https://qiita-image-store.s3.amazonaws.com/0/100572/e9645f3a-74d8-48e4-40e7-173ff45fb4e1.gif)


## プラグインの追加

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

※今回の例では、請求書アプリにプラグイン設定を行います。

<img width="965" alt="2018-12-25_19h53_16.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/44623be4-de0b-05ca-a6b4-38c00c6837b0.png">


## プラグインの設定

## 請求書アプリのプラグイン設定例

- NOTE： メモ
- 説明：　処理の説明等を記載
- プラグイン有効

関連アプリ毎に、下記を設定します。

- 処理名：　処理内容
- アプリ：　集計元アプリ
- 対象アプリ条件：　集計元アプリのレコード抽出条件
- 集計順：　集計元アプリのレコード抽出順
- 集計項目：　集計先アプリの集計項目と集計内容
- テーブル項目：　集計先アプリのテーブル項目と集計内容
- 反映：　　集計元アプリの項目と設定値

![2024-09-10_09h01_32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/8a97cb3c-bfc8-e889-276b-f94bc33a6e73.png)

## 自動・ボタン別設定

自動集計、編集画面・一覧画面で表示するボタンについて設定します。

- チェック：　選択状態で自動集計を有効、ボタンを表示
    - 追加：画面表示時　自動アプリ集計：追加画面表示時に自動計算を行う
    - 編集：画面表示時　自動アプリ集計：追加・編集画面表示時に自動計算を行う
    - 自動アプリ集計　自動アプリ集計：対象アプリ条件に指定した計算式に指定された項目の値が変更された時に自動計算を行う
    - 一覧：一括集計：一括計算時に計算式プラグイン連携を行う
    　※ルックアップコピー項目があれば、最新の値に更新されます。
- デフォルト：　ボタン表示名
- 英語：　英語表記
- 日本語：　日本語表記
- 中国語：　中国語表記

![2023-05-27_16h03_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/309cd847-c13e-c825-654a-050a31685afd.png)

## 一覧別設定

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

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

<img width="522" alt="2018-12-25_20h05_35.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/c21360b4-a5c8-727b-a157-d7d589be184a.png">

## 権限設定

一括更新を行うユーザー・組織・グループを設定します。

![2023-12-08_04h50_55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/3cfe2f0e-0bf8-2946-444c-305dd566a5ef.png)

## 実行条件

条件（計算式）の計算結果によって、下記制御を行います。

- 編集画面では、実行条件でボタンの表示制御
- 自動集計では、実行条件で実行の有無を制御
- 一覧画面の一括集計では、ボタンクリック時にレコード単位に実行条件で実行の有無を制御


![2023-12-08_04h48_41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/80f85c2e-67b9-1cf0-c8f1-49c63a499c6c.png)


## アプリ：　集計元アプリ

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

<img width="333" alt="2018-12-25_20h34_47.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/7d6da532-317a-aaae-2685-c1b0dd7b6f92.png">



## 参照アプリ条件：　集計元アプリのレコード抽出条件

<img width="829" alt="2018-12-26_20h14_41.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/edc01905-d11a-d29c-93ab-7f0d072b1b8b.png">


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

- OR条件の位置： OR 開始位置を指定します。
    - 指定位置以降の条件が or「いずれかの条件を満たす」になります。

例：今回は、「取引先名」と「請求予定月」で関連付けしています。

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

    - 文字： "" で、囲みます。<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">




## 集計順：　集計元アプリのレコード抽出順

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

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

<img width="455" alt="2018-12-25_20h06_47.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/56896b18-906c-0048-582b-b34acd52200b.png">

## 集計項目：　集計先アプリの集計項目と集計内容

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

- 集計先項目
- 項目（計算式）
    - 計算式に集計先アプリの項目を「#フィールドコード」で指定可能
        - 計算式例：「#$id」、「#文字列＆数値」、「IF(#文字列,数値)」
- 集計
    - sum：合計
    - max：最大値
    - min：最小値
    - count：カウント
    - c_uniq：一意の値の個数をカウント
    - first：先頭レコードの値
    - firsta：有効な値を持つ最初のレコード
    - last：最終レコード
    - lasta：有効な値を持つ最後のレコード
- 初期化：　集計元レコードが無い場合に「0」を設定
- 編集可：　集計先項目を編集可能に設定
- 変数として、下記が利用できます。
    - $sno：　集計元レコードの処理番号

![2023-10-06_11h45_28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/4fc1277e-ae94-28bb-44da-c53eba27e811.png)


## テーブル項目：集計先アプリのテーブル項目と集計内容

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

- 有効：　チェックして、テーブルを選択します。
- To テーブル：　対象テーブルを選択します。
- From テーブル：　"-----":レコード または、テーブルを選択します。
- 集計行削除不可：　アプリ集計プラグインで追加したテーブル行の削除ボタンを非表示
- 識別ID非表示：　識別IDに指定した項目を非表示
- 集計：　レコード取得後に集計してテーブルに設定する場合に、チェック
    - 「集計」をチェックすると、集計キー、集計順、ソートキー、ソート順の入力欄を表示
    - 複数アプリから１テーブルに集計する場合、最初に指定された集計方法が有効になる
- ループ配列：　テーブル行のループ処理用に配列を指定します。
    - 数値を指定すると、指定回数分のループ配列と同等になります。
    - ループ配列指定例：　ARRAY("A","B","C")
    - 数値指定：　3 -> ARRAY(0,1,2) を同等
- 出力条件：　計算式の結果で、テーブル行を出力するか制御できます。
    - From テーブル 指定時は、From テーブルの行単位の計算となります。
- チェック：　設定項目を有効にします。無効の場合は、初期値を設定します。
- 識別ID：　レコード識別用の項目を指定します。チェックすると計算式に $id が自動セットされます。
- 編集可：　チェックすると、集計先項目を編集可能とします。
- 項目（計算式）：　集計項目の計算式と同様です。
- 集計キー：　集計キーを番号で指定
    - 項目タイプは、数値、文字列、ドロップダウン、ラジオボタンを指定のこと
    - チェックボックス、複数選択、ユーザー選択等は、値が配列で集計・比較できません。
- 集計順：　asc: 昇順, desc: 降順
- 集計
    - sum：合計
    - max：最大値
    - min：最小値
    - count：カウント
    - c_uniq：一意の値の個数をカウント
    - first：先頭レコードの値
    - firsta：有効な値を持つ最初のレコード
    - last：最終レコード
    - lasta：有効な値を持つ最後のレコード
- ソートキー：　集計後のソートキーを番号で指定
- ソート順：　asc: 昇順, desc: 降順

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

![2021-08-15_21h10_29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/4f4b7cdd-0627-1049-2cd2-a04f4195411d.png)

![2021-08-15_21h11_46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/adc75e5b-4842-d842-eaee-bfbb8f213d10.png)

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

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

![2021-08-15_19h00_38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/a752352a-b567-16a0-dcb4-f4eff674f806.png)


# 集計元アプリへの反映指定時の設定

- 集計元アプリに値を反映する場合、項目（計算式）にレコードID（$id）または「値の重複を禁止する」を設定した文字列または数値項目を指定します。<br>
- 指定されたレコードID またはキー項目は、集計元アプリ更新時にキーとして使われます。


![2021-05-30_00h59_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/b8cba960-a47a-4c67-d349-5672e381bdd6.png)


## 反映：集計元アプリの項目と設定値

集計元アプリに、アプリ集計の結果を反映させる場合に指定します。

※設定例

- レコード更新反映条件：　レコード更新時、計算結果が true の場合ｍ集計元アプリに反映先項目を反映
- チェックボックス項目「請求」に、"済" を設定
- 請求番号にレコードIDを設定

![2022-05-27_09h43_56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/02403cee-748b-b97b-9043-68803e66c686.png)


※集計先アプリのテーブル項目に、$id、レコード番号、ユニーク項目の指定がなかった場合、
アプリ集計後に対象行を削除してもレコード保存時に、アプリ集計対象レコードすべてに反映されます。

# 請求書アプリ　集計元反映例

プラグイン設定で、集計元アプリに請求済み・請求番号などを反映できます。

- 「アプリ集計」ボタンクリックで請求対象レコードをテーブルに設定
- 「保存」ボタンクリックで、集計元のレコードに請求済み・請求番号などを反映

<img width="1553" alt="2019-02-07_14h12_28.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/6c1a1bf0-44d6-4780-cdd4-e8d4a55df7d7.png">


## プラグイン設定例

- 対象アプリ条件に、チェックボックス請求項目が「済」以外を指定
- テーブル項目欄の受注ID に、管理ID<br>
  集計元アプリ更新時にキーとして使われます。
- 反映欄に、
    - チェックボックス請求項目に ARRAY("済")
    - 請求番号に、請求番号

<img width="956" alt="2019-02-07_14h42_01.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/615e214f-292a-f028-2fa1-fbaa9daaf435.png">


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

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

<img width="980" alt="2018-12-25_20h55_45.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/0f008b8f-8cfd-5181-6fa9-a6dbf83195b0.png">


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

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

<img width="971" alt="2018-12-25_20h56_09.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/3b18a05a-2ba6-99c3-d2fa-17780647ae25.png">



# 注意事項

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