kintoneのルックアップで特定の条件に一致したデータのみ取得できるかの検証

  1. Home
  2. /
  3. ブログ
  4. /
  5. kintone基本
  6. /
  7. kintoneのルックアップで特定の条件に一致したデータのみ取得できるかの検証

kintoneに標準機能として用意されているルックアップは他アプリの情報を参照してデータを紐づけることが出来る便利な機能です。kintoneを活用して業務改善を進める上では欠かせない機能と言ってもいいでしょう。

弊社でサポートしているお客様もルックアップを活用しているアプリを作成されているのですが、ある時、次のような質問をされたことがありました。

「特定の条件に一致しないデータを取得しないようにすることって出来る?(特定の条件に一致するデータのみ取得させたい)」

背景としては次の通りで、間違ってユーザに選択させないようにしたいとのことでした。

  1. 製品アプリと注文アプリの2つがある。
  2. 注文アプリでは製品アプリをルックアップしている。
  3. 製品アプリでは生産終了のフィールドを持っており、生産終了していないもののみルックアップで取得させるようにしたい。
    (生産中のものと生産終了のもので製品名が似ているため、間違って選択させないようにしたい)

出来るものだと思っていたのですが、ちょっと気になる部分もあったため即回答を保留し検証したところ、出来る部分と出来ない部分があることが分かりました。

今回は、kintoneのルックアップで条件に一致しないデータを取得しないように出来るかについて検証した結果をまとめました。ルックアップを使用する際の参考になれば幸いです。

ルックアップフィールドへの条件指定の検証

サンプルとして、商品アプリと注文アプリを作り検証してみました。注文アプリの画面は次の通りです。

kintone注文アプリサンプル

ルックアップの初期条件の指定した場合

指定した条件でのみ取得したいということなので、ルックアップフィールドの定義の中にある「絞り込みの初期設定」を指定します。サンプルとして商品アプリと注文アプリを作りましたので、注文アプリのルックアップでは次のように設定をしてみました。

ルックアップの絞り込み初期条件

こうすることで、注文アプリで商品名フィールドの取得ボタンをクリックすると、生産終了していないデータのみが表示されるようになります。

kintoneのルックアップ子画面(初期条件有)

しかし、注意点があります。

ルックアップデータ検索子画面の左上のジョウロをクリックして条件を解除すると、生産終了している商品もリストに選択されるようになります。そのため、生産終了の商品を選べば、画面に反映されてしまいます。

kintoneのルックアップ子画面(初期条件解除時)

ルックアップフィールドへの直接入力した場合

過去の記事にも投稿しましたが、ルックアップはフィールドに直接入力してから取得ボタンをクリックすることでデータを取得することも可能です。

参考:kintoneのルックアップ項目で絞り込み(フィルタ)を楽にするヒント

そこで、生産終了している商品名を直接入力してから取得ボタンを押してみると、やはり選択させたくないデータが取得されてしまいます。

ルックアップ項目への直接入力

このように、取得ボタンから選択しない方法でルックアップフィールドへの指定を行っているような場合、商品名だけでは生産終了か分からないため、意図せずに生産終了の商品を選択して登録、ということをしてしまう可能性があります。

元アプリでレコードのアクセス権を制御した場合

商品アプリのレコードのアクセス権の設定で「生産終了のデータは閲覧不可」とするような設定を行うことで、生産終了の商品をルックアップで選択できないようにすることも可能です。ただしこれを行うと生産終了した商品の詳細を商品アプリで閲覧できなくなりますので、閲覧を許可したい場合はこの方法ではNGです。

ルックアップで取得するデータを条件指定させるためには

ルックアップの初期条件では取得ボタンをクリックした際に表示される一覧のデータを絞り込みさせることが出来ますが、ユーザは自分で条件を変更することも可能なため、初期条件に一致しないデータを選択させることが可能です。また、ルックアップフィールドに名称を直接入力してから取得ボタンを押せば、初期条件に一致しないデータが取得されます。

このように、ルックアップでは取得するデータに制限をかけることが出来ません。

どうしても特定の条件に一致するもののみ選択させたい場合、別の方法を考える必要があります。

名称を変えられないか検討する

ルックアップするデータが目で見て生産終了だと分かればいよいので、今回の場合、商品名を変えるということがまず考えられます。

例えば、生産終了になった商品名の先頭に「【生産終了】」をつけるなどです。

こうすることでルックアップで商品名が表示された時に名称から生産終了と分かるので、運用で生産終了したもので登録しないようにさせることが出来ます。

商品名に生産終了と名称変更

商品名から判断がつくようになります。

商品名を変更したルックアップ

ちなみに、マスタの名称を変えても、登録済み注文の商品名からリンクで辿ることができます。

商品名を変更してもリンクは有効

カスタマイズを入れてチェックする

カスタマイズを入れることで、選択させないようにチェックを入れることも可能です。

例えば

A.ルックアップで取得した際のイベント(値変更のイベント)で、APIを使用してデータを検索&取得させたい条件に一致しない場合はエラーメッセージを表示させる

B.保存前のイベントで、APIを使用してデータを検索&取得させたい条件に一致しない場合はエラーメッセージを表示させる

というような案が考えられます。

B案のように保存前イベントでチェックさせると、生産終了前に登録済みの過去データに対しての変更も出来なくなるため、A案のようにエラーメッセージのみ表示させて、運用で登録しないようにしたほうが現実的かもしれません。以下はカスタマイズでチェックした場合のイメージです。

ルックアップ項目をカスタマイズでチェック

プラグインを利用する

プラグインとしてルックアップ機能を強化したものがいくつか提供されていますので、今回のように条件指定が出来るプラグインを活用するのも良いでしょう。

まとめ

ルックアップは取得するデータに対して条件指定は出来ないようです。

ルックアップで選択させたいデータを絞り込みたい場合、ルックアップ項目の名称を変更して運用でカバーしたり、カスタマイズでチェックをさせたりするという方法があります。

もしkintoneを活用する上でこのようなことをしたい場合は、参考にしてみてください。