rex0220 プラグイン 複数レコードのテーブルを１テーブルにまとめて取得 その１

アプリ集計プラグインの自動集計機能を使って、複数レコードのテーブルを１テーブルにまとめます。
見積書や実績集計などにも応用できると思います。
今回は、アプリ集計プラグイン、計算式プラグイン、項目書式プラグイン、ちょっと便利なプラグインを使います。

- [rex0220 プラグイン 複数レコードのテーブルを１テーブルにまとめて取得 その２](https://qiita.com/rex0220/items/43a92ed89e451e52d691)
- [rex0220 プラグイン 複数レコードのテーブルを１テーブルにまとめて取得 その３](https://qiita.com/rex0220/items/0ca31e05fc63e0131f0f)
 
# 概要

セット番号をルックアップで複数指定して、商品をテーブルにまとめたセットマスタアプリから、商品情報を明細テーブルに取得します。
アプリ集計プラグインの自動集計機能により、セット番号を指定するとすぐに明細テーブルに反映されます。

- アプリ集計プラグインでテーブル内のルックップで指定された複数のセット番号の商品を１テーブルに取得

![2023-01-29_14h10_20-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/2cd2b2bc-c37d-8a4f-8d91-cea129ad4791.png)

![2023-01-29_22h45_42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/7056ac52-198d-67a0-3d71-13cbf595100a.png)

# 操作例

![2023-01-29_22h34_06.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/38faa99b-01e5-0ac5-42b7-9ed13596adf3.gif)

# マスタアプリ

[rex0220 計算式プラグイン テーブル内小計](https://qiita.com/rex0220/items/63808fc1b0d3ff9cd561)で作成したアプリをマスタアプリにします。

テーブルに、複数の商品・単価・数量・金額を持っています。
あとセット番号、商品セット名等を追加しています。

![2023-01-29_16h42_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/c3f1fe3c-0695-bf9b-1132-5c1bfd624822.png)

# 集計アプリ

- セット情報：　取得するセットを指定するテーブル
    - 有効：　取得対象にチェック
- 明細テーブル：　マスタアプリから取得したセット情報

![2023-01-29_22h36_48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/5dc96691-aad1-d720-9f7a-3f4ad0133307.png)

# アプリ集計プラグインの設定

マスタアプリから、明細テーブルへデータを取得する設定を行います。

- アプリ：マスタアプリを指定
![2023-01-29_22h38_22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/c39eece8-d55f-e178-3a04-afcf2842baa4.png)

- 自動・ボタン別設定
    - 「編集・自動アプリ集計」のみチェック
対象アプリ条件で指定された項目の値が変化したときに自動集計が実行されます。
今回は、「有効」と「商品セット」が変わったときに自動集計
※ルックアップ項目のセット番号は、kintone API の仕様で変化を検知できません。
![2023-01-29_17h45_40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/93e669ea-1b9e-8777-c111-72642054f4c7.png)


- 対象アプリ条件
~~~
// セット番号
LET(dummy,商品セット名,
   DISTINCT("",TARRAYIF(IN(有効,"有効"),セット番号)))
~~~
- セット番号：
    - LET(dummy,商品セット名,　：　
ルックアップのセット番号は、値変更イベントが発生しないのでコピー項目の商品セット名を式で指定
※商品セット名は、変数 dummy に値をセットするだけで計算結果には影響しません。
    - DISTINCT("",TARRAYIF(IN(有効,"有効"),セット番号)))
有効なセット番号を取得して、配列化
配列の "" は、 有効なセット番号が無い場合にレコード取得条件がエラーにならないためのおまじない
        - 取得条件例：　セット番号 in ( "", "SET-001", "SET-002" )

![2023-01-29_17h13_17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/ae330f6b-48b3-5c75-bdae-9111a8e186e7.png)

- 集計順
![2023-01-29_17h16_56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/c723eadc-855f-ead0-e7e0-757c489432f4.png)

- テーブル項目

※「自動設定」をクリックすると、フィールドコードが同じものがあれば、設定されます。
![2023-01-29_22h42_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/be7f2c67-1356-3df8-eeb7-3b78dc4b3b2a.png)


# 計算式プラグインの設定

いくつか集計と編集不可等の指定をします。

~~~
// 合計金額
SUMIF(AND(有効,商品セット名),セット金額)
// セット情報概要
JOIN(
  TARRAYIF(AND(有効,商品セット名),
    商品セット名&"("&FIXED(セット金額)&")"),
  " ")
// 明細テーブル　：　チェックのみで、テーブル項目が入力不可になります。
~~~

![2023-01-29_22h43_55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/46b750ca-49d9-e391-4346-92aa3ae75abb.png)

# 項目書式プラグインの設定

テーブルが見やすくなるように、テーブル行の背景色をかえます。

- セット情報：　無効の時に書式指定
    - 有効=""
- 明細テーブル：　小計行に書式指定
    - 分類="小計"

![2023-01-29_19h57_33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/2685b816-d7e3-bb36-67bb-a0c9eedc20a4.png)