公開日:
こんにちは!「ルックアップにするべきか、せぬべきか、それが問題だ」という言葉でおなじみ(言ったことない)、システム開発グループのすずきです。
kintoneにおいて、「ルックアップ」は無くてはならない機能ですよね!
他のアプリの任意のレコードからデータをコピーすることができる、「関連レコード一覧」「アプリアクション」と共にkintoneに用意された3つのアプリ間連携機能の1つですね。
この大変便利なルックアップという機能ですが、要件によっては基本機能のルックアップでは対応しきれないケースもあります。例えば以下のようなものです。
- 他のフィールドで入力した値によってルックアップで取得するレコードを絞り込みたい
- キーとなるフィールド(会社コードなど)以外のフィールド(会社名など)で検索したい
- 複数のアプリからレコードを取得できるようにしたい
こういった場合の対応手段の一つとして、ルックアップのような機能を自作する、という方法があります。JavaScriptで作ろうと思うと時間がかかりますが、弊社のノーコードカスタマイズツールのgusuku Customine(以下カスタマインと呼称)を使えば数倍の速度で作ることができます!
そこでは今回は、カスタマインで基本機能のルックアップの機能を、無理のない範囲でできるだけ再現してみたいと思います!
下が今回再現したい基本機能のルックアップです。これをもとにカスタマインで同等の機能を再現してみます。

フィールド設置とボタン設置
まずは以下のようにフィールドを設置します。

なんだかフィールドが一つ多いですね。実はこれがコツなんです!
元のルックアップは、検索ワードを入れる欄とルックアップのキーの値がコピーされる欄が一体になっています。ですがルックアップの機能を再現しやすくするには、この2つは分離しておいた方が都合がいいのです(後で効いて来ます)。
商品検索フィールドが検索ワードを入れるためのフィールドなので、「取得」「クリア」ボタンは「商品検索」フィールドに設置しましょう。「ボタンをフィールド名の右に配置する」を使えば省スペースになります!
「商品コード」はルックアップのキーとなるフィールドの値が入るフィールドです。「商品名」とともに編集不可にしておきましょう。

レコード取得機能
『取得』といっても、処理にはいくつかのパターンがあります。
- 検索ワードを入力せずに「取得」ボタンを押した場合、レコードを全て取得しポップアップで表示、選択したら各フィールドにコピー
- レコードが0件の場合は「データがありません。」というエラーを表示
- 検索ワードを入力して「取得」ボタンを押した場合、部分一致で検索してレコードを取得
- レコードが1件のみの場合はポップアップを表示せずすぐに各フィールドにコピー
- レコードが複数件の場合はポップアップで表示、選択したら各フィールドにコピー
- レコードが0件の場合は「データがありません。」というエラーを表示
この動きは問題なく再現できます!


「クリア」ボタン
「クリア」ボタンは、押すと「参照先から取得した値もクリアされます。よろしいですか?」という確認ダイアログが表示され、OKを押すと各フィールドの値がクリアされます。
この動きも問題なく再現できます。

コピー元のレコードにアクセスできるようにする
基本機能のルックアップは、詳細画面ではコピー元のレコードへのリンクの機能も備えています。
これを一番近い形で再現できるのは「アプリコード」を設定する方法です。アプリコード付きのレコード番号であればリンクになります。ただ、自動的に振られるレコード番号はキーには不向きなのであまりオススメできません。
ここは簡単にリンクが実現できる「関連レコード一覧」を設置するのがいいでしょう。

関連レコード一覧だと一覧画面には表示できないので、もし一覧画面上でもリンクにする必要があるならアプリコードの利用も検討しましょう。
「取得」押し忘れ防止機能
基本機能のルックアップには、ルックアップフィールドの値を編集した場合、「取得」か「クリア」を押さないとレコードを保存できないようにエラーを出す、という機能があります。つまり、ルックアップで取得したレコード情報とルックアップフィールドの値が食い違うのを防いでくれる仕組みです。
この機能を再現するのに、最初に「検索ワードを入れるフィールド」と「ルックアップのキーを保存するフィールド」を別々に設置していたことが活きてきます!
「ルックアップのキーを保存するフィールド」である「商品コード」を編集不可にしているので、キーの値とキー以外のルックアップでコピーされたフィールドの内容が食い違う、ということが発生しないようになっています。
また、検索ワードを入力したのに「取得」ボタンを押し忘れることを防ぎたい場合は、
- 「取得」ボタンを押してレコードの取得に成功したら、「検索ワードを入れるフィールド」を自動的に空にする
- 「検索ワードを入れるフィールド」に値が入っている状態でレコードを保存しようとしたらエラーを出す
としておくと実現できます。

再現できない機能
残念ながら全く実現できない機能もあります。
CSV読み込みやREST APIを使って、ルックアップフィールドを更新したら、自動でルックアップを取得する機能です。
こちらはどうにもならないので、CSV読み込みやREST APIによる更新時に、各コピー先フィールドの値もそれぞれ指定する必要があります。
テーブル内のルックアップの場合
テーブル内のルックアップを入れる場合は、少々難易度が上がりますが不可能ではありません。
ボタンを設置できないため、「取得」や「クリア」はチェックボックスフィールドで代用する必要があります。

こちらも紹介したいところですが、説明が長くなってしまうので、また別の機会にご紹介したいと思います。
まとめ
いかがでしたでしょうか?
形が少し変わった部分もありますが、元の機能のほとんどを再現できたのではないでしょうか?
ルックアップの機能は思いのほか複雑ですので、カスタマインをもってしても、再現にはかなりの手間がかかります。
ただ、拡張性は高いので、基本機能のルックアップではどうにもならない、という時にこの記事を思い出していただければ幸いです。
投稿者プロフィール

- kintoneがメインのエンジニアです。空き時間の半分を合気道に使います。
最新の投稿
kintone2025年9月25日カスタマインはルックアップの機能をどこまで再現できる?
gusuku2025年7月17日ステータス削除で失敗しない!kintoneアプリの設定変更テクニック
gusuku2025年6月12日同期入社の私が見た、カスタマインの成長の記録
gusuku2025年5月8日耐えられる?gusuku Deploit無き世界