kintone では、アプリ間の連携を実現するために、関連レコード一覧やルックアップフィールドが用意されています。
その中でもルックアップフィールドは、kintone にアプリを作る上でリレーションを保つため重要な役割を持ちます。
ルックアップの対象は変更されることのない一意なキーとなるフィールドを指定するのが望ましいですが、これにはいくつかの問題があります。
意味の持たない一意なキーが、どのレコードに紐づいているか分からないわけですから、もし取得ボタンを押して即取得、とするためには、「09742」のような文字列を覚えておかなければならないということになります。
また、ルックアップはあくまでコピーとなるため、元のフィールドの値が変更された場合、自動で更新されるような仕様はありません。ルックアップしたタイミングの値が残り続けます。
さらに、ルックアップフィールドには参照制約が存在し、CSV 取込などを行う際に、ルックアップ先のレコードが存在しないとエラーが発生します。
できることなら、取得する参照元は「顧客名」のような分かりやすいものとし、アプリ間の紐づけは別の方法で行いたいところです。
そこで今回は、ルックアップの使い勝手だけを残して、関連付け機能を削除したプラグインを作成したのでご紹介します。
ソースコードは全て GitHub に公開しており、無料で利用できます。
まずはデモからご覧ください。
レコード作成・編集時
レコード作成・編集時、プラグインに設定した対象フィールドの右側に、ルックアップフィールドにある「取得」「クリア」ボタンを再現したものを表示します。
入力した値に一致するレコードが 1 件だけの場合
フィールドに入力した値に一致するレコードが 1 件だけだった場合、標準機能と同様に、「取得」ボタンを押すだけで、ルックアップ先のレコードの値を取得します。
入力した値に一致するレコードが複数件存在する場合
フィールドに入力した値に一致するレコードが複数件存在する場合、専用のダイアログが表示され、取得するレコードを選択することができます。
ダイアログには独自の検索機能を実装しており、1 文字検索も可能となっています。
何も入力せず「取得」ボタンを押した場合
フィールドに何も入力しない状態で「取得」ボタンを押した場合も、専用のダイアログが表示されます。
設定画面
活用例
標準のルックアップフィールドと併用する
当プラグインのコピー先には、ルックアップフィールドを指定することもできます。
さらに、ルックアップフィールドが指定された場合は、自動的にルックアップの取得を実行します。
ルックアップフィールド
これを利用して、
- キーでない値をプラグインからルックアップ
- キーになる値を標準のルックアップフィールドにコピー
- 標準のルックアップを実行
と設定しておくことで、ルックアップの利便性を生かしつつ、アプリ間の紐づけも保つことができます。
お問い合わせ
プラグインに不具合があれば修正します。
ナビゲーションの「コンタクト」からご連絡をお願いします。
また、「こんなプラグインが欲しい!」という要望も募集しています。お声をいただければ、いつの間にか、プラグイン一覧に追加されているかもしれません。
リリースノート
レコードを選択するダイアログのヘッダーにフィールドコードではなくフィールド名を表示するように変更
ルックアップをクリア後、処理を元に戻すボタンを追加
対象フィールドを選択するダイアログの並び順を変更する設定を追加
プラグイン設定が不十分な場合、警告を表示するように変更
フェールソフトモードを追加
レコード取得時に使用していたカーソルAPIを廃止し、レコード番号を使用するように変更