gusuku Customine カスタマインの歩き方 ルックアップ編
2. 実例に学ぶカスタマイズ作成のポイント

2-3. カスタマインを用いた解決策

2-3-3. ルックアップは「1つの条件でしか検索できない」ので、複数条件で検索したい

前の記事:2-3-2. ルックアップは「存在するデータしか取得できない」ので、取得前に登録したい

次の記事:なし(この記事が最終です)


はじめに

「ルックアップ」とは kintone で配置できるフィールドの 1 つで、ルックアップフィールドを配置すると、他のアプリにあるレコードの情報を参照してデータを取得(コピー)することができます。同じ内容のデータを繰り返し入力せずに済むことで、入力ミスを防ぎ、入力時間を短縮できます。


たとえば、案件管理アプリにルックアップフィールドを配置して、関連付けるアプリとして顧客管理アプリを指定します。これにより、案件管理アプリでレコードを登録するときに、顧客管理アプリのデータをコピーして入力できるようになります。


この例では、案件管理アプリにおける「顧客名」は「ルックアップ」フィールドで、「部署名」「担当者名」は「ほかのフィールドのコピー」として設定されており、ユーザーは入力する必要がなく顧客名をコピーする時に同時に顧客管理アプリからコピーされます。


課題:ルックアップは1つの条件でしか検索できない

非常に便利なルックアップの機能ですが基本機能の仕様通りに使う場合、次のような課題点もあります。


ルックアップでレコードを取得する場合、ルックアップフィールドに設定した値を元に、ルックアップ先のアプリのレコードを絞り込む事ができます。

ただし、基本機能ではそれ以外の条件を設定する事はできないため、もし一致するレコードが大量に存在する場合は以下のようにたくさんのレコードが候補として表示されます。


例えば上の例では「金都運」が含まれる全ての顧客が表示されてしまいます。ルックアップの基本機能では複数条件の絞り込みができない事から、自身の担当顧客を探すのに手間がかかります。

※注:この例では「金都運」という文字列で顧客名を検索しています。また課題がわかりやすくなるように、「金都運」という文字列で始まるレコードを追加しています。


それでは、この課題を解決するカスタマイズとそのポイントについて順に見ていきましょう。


今回は次のように顧客区分の選択内容に応じてポップアップを表示し、ポップアップで選択された値をセットするカスタマイズを実現します。


カスタマイズに用いるアプリ構成

今回は、kintone アプリストアにある「営業支援パック」を使用してカスタマイズを作成します。「営業支援パック」では各アプリ間は以下のような関係となっています。
※フィールドコードを分かりやすくするため、フィールドコードは「フィールド名_アプリ名」に変更しています。


カスタマイズを行うアプリは「案件管理」になります。

またカスタマイズの前に、フィールドを2つ追加してください。


(1)今回のカスタマイズでは、ラジオボタン「顧客区分」を追加してください(項目と順番には「エンドユーザー」「パートナー」を設定してください)。


(2)「顧客区分」と「顧客名」の間にスペースフィールドを挿入し、要素IDを「lookup」として設定しておいてください。


カスタマイズ

この課題はカスタマインを用いて、ルックアップフィールドと同等(以上)の機能を持つ、「ボタンを押したら他アプリから指定した条件でレコードを取得する」仕組みをカスタマイズで実現すれば、解決できます。


カスタマイズについては次のように設定してください。

ポイントについても都度説明していきます。


ボタンをスペースに配置

やること「ボタンをスペースに配置する」、条件「追加画面・編集画面を表示した時」を用います。


ボタンを設定する場所は「スペース」フィールドの場所になります。スペースフィールドを設置する時に「要素ID」を付け、その指定した要素 ID の場所にボタンを配置するという流れになります。


なお、ボタン以外でも「kintone のフィールドには存在しないもの」を描画するときには基本的にスペースフィールドを用います。カスタマインによるカスタマイズでは、ボタンの他にタブ、ドロップダウン、地図の表示などでもスペースフィールドを用います。


レコードを取得する

やること「全レコードを取得する」、条件「ボタンを押した時」を用います。

ボタンを押した時

カスタマイズはユーザーが開いているアプリで動きます。

そのため、ユーザーが操作していないアプリのデータを使用したい場合にはレコードを取得する必要があります。


他アプリからレコードを取得するための「やること」には色々あるのですが、レコード取得については、カスタマインの歩き方 レコード取得編 が詳しいので、こちらのカスタマインの歩き方も併せてご覧ください。


取得したレコードを絞り込む

やること「取得したレコードを絞り込む」、条件「他のアクションの実行が完了した時」を用います。


前述の通り、レコード取得には様々な方法があります。今回はまずアクション8で全てのレコードを取得しました。

このままでは選択しているラジオボタンの項目に関わらず全てのレコードが表示されてしまうため、「ラジオボタンで選択した内容と一致するレコードのみ」に絞り込む必要があります。このように取得したレコードから条件に合致したレコードだけを取り出すときには やること「取得したレコードを絞り込む」を使用します。


「やること」の設定項目は次のように4つあります。


設定項目名

設定すべき内容

元のレコード

絞り込む前のレコードを指定します。予め他のアクションによってレコードを取得しておく必要があります。

今回のカスタマイズだとアクション8のやること「全レコードを取得する」でレコードを取得済みなのでこれを指定します。

条件になるフィールド

ここで指定した条件に従って元のレコードを絞り込みます。

条件になるフィールドには元のレコードで絞り込みの条件としたいフィールドを指定。比較値には現在のレコードのフィールドや固定値、他のアクションの結果を指定し、条件で指定した内容に従って絞り込みます。


例として今回のカスタマイズでは

 条件になるフィールド:顧客区分_顧客管理

 条件:等しい

 比較値:= 顧客区分_案件管理
と設定しており、この場合元のレコードの「顧客区分_顧客管理」フィールドが現在のレコードの「顧客区分_案件管理」で選択されている値と等しいレコードのみに絞り込まれます。

もう1つの例で記載します。

 条件になるフィールド:数値系のフィールド

 条件:大きい

 比較値:20

と指定した場合、数値型のフィールドが20以上のレコードのみに絞り込まれます。

条件

比較値


レコードをポップアップで表示する

やること「レコードの一覧をポップアップで表示する」、条件「他のアクションの実行が完了した時」を用います。


取得した値をフィールドにセットする

やること「フィールドに値をセットする」、条件「確認・入力ダイアログで「OK」を押した時」を用います。



ルックアップを取得しなおす

やること「ルックアップを取得しなおす」、条件「他のアクションの実行が完了した時」を用います。


なおkintone の仕様により、ルックアップフィールドに新たに値を設定した場合は、必ず「取得」ボタンを押した後に保存する必要があります。これは、やること「ルックアップを取得しなおす」を使うと自動で設定してくれます。


おわりに

この記事では、フィールドの値(顧客区分の選択内容)に応じてポップアップを表示し、ポップアップで選択された値をセットするカスタマイズを説明しました。


ぜひ、このカスタマイズを使ってルックアップの検索を使いやすくしてみてください。


ドキュメントサポートページもぜひご活用ください。

また、ご不明点等ございましたら、チャットにてご質問ください!


gusuku Customine カスタマインの歩き方 ルックアップ編
2. 実例に学ぶカスタマイズ作成のポイント

2-3. カスタマインを用いた解決策

2-3-3. ルックアップは「1つの条件でしか検索できない」ので、複数条件で検索したい

前の記事:2-3-2. ルックアップは「存在するデータしか取得できない」ので、取得前に登録したい

次の記事:なし(この記事が最終です)