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