今回は全レコードのルックアップを一括で取得しなおし、最新の情報にするカスタマイズをご紹介します!
kintoneには他のアプリの情報と連携する「ルックアップ」機能がありますが、コピー元のレコードが変更されてもコピー先のレコードの情報はそのままになり、情報の整合性が取れないということが発生することがあります。
コピー元が変更されたときに自動でコピー先のレコードを更新するカスタマイズは過去にご紹介しました。
ただし、これはkintoneで編集して保存したときに動くものなので、CSVファイル読み込みによって更新した場合は、機能しません。
そんな時はコピー先のアプリの全レコードのルックアップを一度に取得しなおすことができるボタンを作ってみましょう!
Customineの基本的な事柄は、こちらの「はじめてのカスタマイズ」をご参照ください。
アプリのフォーム
今回使うアプリはkintoneアプリストアの案件管理アプリと顧客リストアプリの二つですが、少し手を加えて、案件管理アプリがルックアップで顧客リストアプリから顧客情報を取得するようにしてみましょう。
顧客リストアプリ
一番上に「会社ID」フィールドを追加します。
フィールドタイプ | フィールド名 | フィールドコード | 備考 |
文字列(1行) | 会社ID | 会社ID | 入力必須・重複禁止 |
案件管理
一番上にルックアップフィールド「会社ID」を追加し、各項目を顧客リストアプリからコピーします。
フィールドタイプ | フィールド名 | フィールドコード | 備考 |
ルックアップ | 会社ID | 会社ID | コピーするフィールド ・会社名 ・部署名 ・先方担当者 ・TEL ・FAX ・メールアドレス |
また、カスタマイズのしやすさのため、各フィールドはフィールドコード=フィールド名となるようにフィールドコードを変更しておきましょう。
実現の方針
一覧画面では「ルックアップを取得しなおす」は使用できません。なので別の方法を考えます。
レコード作成、更新系のアクションでルックアップフィールドに値をセットすると、自動的にルックアップを取得します。
今回はこの仕組みを利用して、全レコードのルックアップを取得しなおします。
Customineの設定
ボタン設置
まずはルックアップ更新のトリガーとなるボタンを設置します。
「ボタンをメニュー位置に配置する」と「一覧画面を表示した時」を使います。
ルックアップ更新
「ボタンを押した時」をきっかけに全レコードを更新します。全レコードをは、「全レコードを取得する」で全レコードを取得し、「レコードをもとに別のレコードを更新する」で取得したレコードを全て更新することで実現出来ます。
「やること」は「全レコードを取得する」です。
「取得先アプリ」はこのアプリです。
「条件」は「ボタンを押した時」です。
「やること」は「レコードをもとに別のレコードを更新する」です。
「更新先アプリ」はこのアプリです。
「キーとなる更新先のフィールド」と「キーの値となる元になるレコードのフィールド」は、どちらも「レコード番号」です。更新するレコードと元となるレコードとは同一のレコードでなくてはいけないので、レコード番号が同じもの同士で対応させます。
「元になるレコード」はレコード取得のアクションを選択します。
「マッピング」は「会社ID=会社ID」です。元になるレコードの「会社ID」の値で「会社ID」フィールドを更新します。同じ値なので会社IDの値自体は変わりません。
「更新の競合をチェックする」は「チェックする」にしておきます。
「条件」は「他のアクションの実行が完了した時」で、全レコード取得の直後に処理されるようにします。
画面再読み込み
これでボタンを押すと各レコードのルックアップが最新の状態に更新されるようになりました。しかし、一覧画面には反映されません。一覧画面に反映させるためには画面を再読み込みさせる必要があります。
そこで更新したら自動で画面を再読み込みする処理を追加しましょう。
「やること」は「画面をリロードする」です。
「条件」は「他のアクションの実行が完了した時」で、レコード更新の直後に画面を再読み込みするように設定します。
動作確認
ここまで設定ができたら動作を確認してみましょう。
手順は以下の通りです。
顧客リストアプリで新しく顧客レコードを作成する。
案件管理アプリでレコードを新規作成し、その顧客をルックアップで取得して、保存します。
1で作った顧客レコードを編集し、コピーされる項目を書き換える。
案件管理アプリの一覧画面で「ルックアップを更新」ボタンを押す。
一覧が更新され、2で作った案件レコードの顧客情報が更新されたら成功!
注意!!
「会社ID」が入力されていない、つまりルックアップで顧客情報を取得していないレコードは、今回作成したボタンで更新してしまうと顧客情報が空になってしまいます。
必要なデータを消してしまわないようにご注意ください。CSVファイル書き出しでバックアップを取っておくと安心です。
もう一工夫してみましょう
一度に全レコードを更新すると、取り消したい場合に元の状態に戻すのが大変になります。
なので、本当に更新していいかどうかの確認を取る処理を挟みましょう!
使うのは「確認ダイアログを表示する」です。
また、レコード取得のタイミングは「確認・入力ダイアログで「OK」を押した時」に変えておく必要があります。
完成!!
終わりに
今回は全レコードを更新しましたが、レコード取得アクションを変えればもう少し限定することができます。
例えば、「一覧の条件でレコードを全件取得する」や「一覧で画面に表示されているレコードを取得する」を使えば、一覧の絞り込み方によって更新するレコードをその都度限定することができます。
どうすれば使いやすくなるのか、考えてみてくださいね!
Customineドキュメントやサポートページもぜひご活用ください。