rex0220 ルックアップ先更新プラグイン


kintone 標準機能では、ルックアップ項目の値を変更した場合、ルックアップ参照しているアプリのレコードは、更新されません。
RDB データベースで、テーブル結合した場合と異なり、ルックアップ機能は値のコピー機能です。
しかし、データベースとして使用する場合は、マスターの最新データを反映したい要望が多いです。

このプラグインは、ルックアップ先更新処理を簡単に設定して、更新できます。
複数アプリがルックアップ対象でも、対象アプリを順次更新します。

- 更新条件指定機能
- 一覧画面で、一括ルックアップ先更新機能（PCのみ）
- APIトークン対応
- PC・スマホ対応

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

※ Ver.26
・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 に変更

# ルックアップ先更新プラグイン

編集画面で「保存」後に、ルックアップ先更新処理が実行されます。
また、詳細画面でプロセス管理のステータスを変更時に、ルックアップ先更新処理が実行されます。
更新処理中、処理件数が表示されます。

プログレスバーとアプリ別件数表示されます。

**更新処理中に、画面を閉じたり、別ページに移動すると更新処理が中止されます。**

![lookup01.png](https://qiita-image-store.s3.amazonaws.com/0/100572/3d15517e-868d-a1c7-f007-82772cde55ee.png)

# スマホ対応

スマホでレコード変更を行った場合も、ルックアップ先更新処理が実行されます。

<img width="282" alt="2018-04-04_13h57_09.png" src="https://qiita-image-store.s3.amazonaws.com/0/100572/3bffb77a-c76c-784c-0b2e-868d545cb07f.png">



# 1万件のレコード更新可能

対象件数が１万件でも、更新可能です。
![lookup02b.png](https://qiita-image-store.s3.amazonaws.com/0/100572/e451b6b2-76d3-1631-e8f7-276e88265666.png)

# 対象アプリ10本でも更新可能

プラグイン設定画面

![2021-09-30_11h02_44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/05ce6a62-8495-255e-92a7-d7cfd82a9521.png)

更新ダイアログ表示
![lookup02d.png](https://qiita-image-store.s3.amazonaws.com/0/100572/e9d28db2-7954-1d83-8bf4-6ed6fe4634e2.png)


# ルックアップの項目値変更に対応

ルックアップのキー項目変更にも対応しています。

![lookup02a.png](https://qiita-image-store.s3.amazonaws.com/0/100572/9a64cf00-e23d-e458-d6e1-b2ef70b0c10b.png)



# ルックアップデータ削除のエラー
**ルックアップ先アプリのレコード状況により、更新エラーが発生する場合があります。
ルックアップのデータ削除した場合、該当レコードのエラーを訂正してください。**

![lookup04a.png](https://qiita-image-store.s3.amazonaws.com/0/100572/8f61fff6-9541-e612-be16-f92cd2dcbaac.png)


# ルックアップ設定変更によるエラー

**ルックアップ先アプリの画面設定変更により、更新エラーが発生する場合があります。
ルックアップ設定を変更した場合、プラグイン設定画面で再設定してください。**

![lookup04b.png](https://qiita-image-store.s3.amazonaws.com/0/100572/79869841-16ab-9415-9347-db2f826457c0.png)

# 一覧画面での編集機能

![2017-05-08_09h56_07.png](https://qiita-image-store.s3.amazonaws.com/0/100572/b409c63f-6252-a127-a6f6-c52f213e1aca.png)

# 一覧画面での「ルックアップ先更新」機能

プラグイン設定により、一覧画面に「ルックアップ先更新」ボタンを表示できます。
一覧画面で表示対象のレコードについて、まとめてルックアップ先更新を実行できます。
**※対象レコードは、最大 2,000件です。2,000件以上の場合は、対象レコードを絞ってください。
REST API の１日当たりの回数制限（1万件/日）を超えないように調整してください。**

<img width="836" alt="2020-04-05_23h55_40.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/ff5465ed-b249-5bb3-5d71-2347705863ff.png">



# プラグインの追加

![lookup05.png](https://qiita-image-store.s3.amazonaws.com/0/100572/9b0b867d-cccb-05bd-5ac2-83d01b2ff65c.png)



# 設定画面

初期設定時、設定画面を開くと全アプリを検索し、ルックアップ参照しているアプリを取得します。
２回目以降は、前回取得したルックアップ参照しているアプリを表示します。

- 「ルックアップ先アプリ検索」
    - ルックアップ参照しているアプリが追加された場合は、「ルックアップ先アプリ検索」をクリックしてください
- 「対象項目変更時のみ更新」
    - チェック時に、ルックアップ関連項目を変更時にレコード更新処理実行します
    - ルックアップコピー項目が追加・削除された場合、プラグインの再設定が必要

更新対象とするアプリを選択して、「保存する」をクリックします。

![2024-10-04_11h01_49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/11cd9161-f53c-6210-12dd-4fe66b4e23ce.png)

「ルックアップ先アプリ検索」の実行例

![2024-10-04_11h04_56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/ab2ec715-822a-8b20-bec1-44e704610859.png)


## ルックアップ設定チェック

項目設定内容により、API更新可能かチェックします。
<img width="944" alt="2020-04-05_23h30_14.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/7c27a266-e4ab-6393-65d1-84034871889a.png">

## 「値の重複を禁止」の設定

ルックアップ先更新を行うには、ルックアップのマスター側の項目の値がユニークキーとなっている必要があります。

例えば、担当者名に同じ名前のデータが複数登録されているとルックアップされた値がどちらのレコードか判断できません。
※ルックアップ選択時は、マニュアルでどちらかのレコードを選択していますが、レコード登録後はどちらのレコードかわからなくなります。

対応としては、下記のように担当者名の「値の重複を禁止する」を設定します。
なお既存レコードに値の重複がある場合は、あらかじめ重複を解消してください。
また、「値の重複を禁止する」を設定できないようなケースでは、ルックアップ項目を変更する必要があります。

<img width="698" alt="2020-06-19_08h59_36.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/a58d8fd3-d89c-f043-a26b-9a5426ead807.png">


## 更新条件

更新対象レコードの条件を指定します。
「編集」ボタンをクリックすると、更新条件のダイアログが表示されます。
更新先アプリの項目と条件を指定します。条件値には、計算式が指定できます。
※計算式には、[計算式プラグイン](https://qiita.com/rex0220/items/ae83c6d5ce50ff7a9a73)の計算式が使用できます。

<img width="707" alt="2020-04-05_23h35_23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/1baaeed4-55dc-2563-423b-819078fdf04a.png">

## APIトークンの指定

ユーザーに更新先アプリの参照・更新権限を付与できない場合に、APIトークンを指定して更新することが出来ます。
自アプリのAPIトークンと更新先アプリのAPIトークンの指定を行います。

１：　自アプリのAPIトークン。レコード閲覧権限が必要
２：　更新先アプリのAPIトークン。レコード閲覧・レコード編集権限が必要

![2021-09-30_11h02_44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/ea6d4524-b719-f11f-93de-5d27045fc0f5.png)

- API トークンのテスト

APIトークン入力エリアの右のボタンをクリックして、内容をチェックできます。
※テストは、対象アプリのレコード取得のみ

![2021-09-30_11h15_21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/77800153-f070-12d2-56b9-e148fcbed7bb.png)

## APIトークンの生成方法
APIトークン生成後、アプリ更新まで行ってください。

１：　自アプリのAPIトークン。レコード閲覧権限を付与
![2021-09-30_11h26_56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/c928a388-903c-e0d7-9584-4ec96dce51f7.png)
２：　更新先アプリのAPIトークン。レコード閲覧・レコード編集権限を付与
![2021-09-30_11h31_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/26c06756-cc7b-ed01-16cc-9c62a2743351.png)



## ボタン別設定

一覧画面で「ルックアップ先更新」ボタンを表示する場合に、チェックします。
ボタン名を変更する場合は、名称を変更します。

<img width="690" alt="2020-04-05_23h47_10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/10aacf92-5828-a042-2b53-d08c0e79e567.png">
## 一覧別設定

「ルックアップ先更新」ボタンを表示する一覧を指定します。

<img width="523" alt="2020-04-05_23h44_55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/54380e3d-4504-0a0a-8432-5abb7fd8f6fa.png">


## 権限設定

「ルックアップ先更新」ボタンを表示するユーザー・組織・グループ（ロール）を指定します。

<img width="455" alt="2020-04-05_23h46_03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/217234d0-516e-87ad-3d43-5ea2e6bc3289.png">

# 注意事項

- 更新処理中に、画面を閉じたり、別ページに移動すると更新処理が中止されます。
- レコードを削除された場合、本プラグインではエラーになりません。
- 既に、JavaScript によるカスタマイズを行っているアプリの場合、処理が競合して、エラーになる場合があります。その場合は、該当するアプリでプラグインの使用を中止してください。