公開日:
こんにちは!来月から育児休業なサポートチームのちくわです(2ヶ月ほどお休みをいただいて新生児👶と向き合ってきます)
kintoneでデータを管理したり、他のアプリのデータを活用したりする上で、ルックアップって便利ですよね。例えば、マスタ用のアプリを用意しておき、そこから参照すれば、入力の手間も省けるし、誤入力も減りますし、管理しやすいです。
というように基本機能だけでも有用なのですが、それに加えて、弊社のgusuku Customine(以下、カスタマイン)を使用してカスタマイズすると、よりルックアップを有効活用できます!(詳細は後述します)
ところが!!カスタマインはかゆいところに手が届くで有名なサービス(?)なのですが、制限を超えていくことまではできません…
今回はそんなルックアップのカスタマイズを行う時に直面する制限についてのお話です。
ルックアップのカスタマイズで使える「やること」
ルックアップは便利な機能ですが、カスタマインによりパワーアップできます。そのひとつが ”やること”「他のアプリからフィールドの値をコピーする」です!
このやることを使用すると・・
「条件」と組み合わせることで、特定の場合だけフィールドをコピーしたり
キーに合うレコードが複数ある場合に最新の1レコードからコピーしたり
テーブルの各行に対して一斉にコピーしたり
ということができます!!
あとは、「ルックアップを取得しなおす」でルックアップの取得ボタンを押さずに自動で取得しなおしたり(他のフィールドのコピーも行います)

基本機能だと入力値での検索しかできないところを「ルックアップの選択をプルダウンに変更する」により多段階のプルダウンでの検索という選択肢をご提供しております

※このやることの設定ポイントは、使用する「選択肢となるフィールド」の中で一番下にルックアップの「コピー元のフィールド」を設定することです…!(今回なら「選択肢となるフィールド(3)」ですね)


他にもルックアップに関する”やること”はありますし、「ルックアップで取得が成功した時」などアクションを実行する条件もあります。
ぜひサポートサイトで色々と検索してそれらを使用したカスタマイズ例なども見てみてください〜
ルックアップの現在値から、ルックアップの検索結果が1件に決まらない場合は、ルックアップの取得は行われません。の本題
これらのやることを実行してkintoneアプリでルックアップを取得するとき、場合によっては制限事項によりルックアップの選択画面でレコードを選択しないと取得できないことがあります。
理由はこれです。
ルックアップの現在値から、ルックアップの検索結果が1件に決まらない場合は、ルックアップの取得は行われません。
この制限事項についてカスタマインのサポートにもよくお問い合わせいただくのですが、この場合、ルックアップの取得は行われません。
では、この状態でアクションを実行するとどうなるのかというと・・
①エラーが出るの?
②最新のレコードが取得されるの?
③何も起こらないの?
答えは③です!(突然のクイズw)
1件に決まらない場合はルックアップの値を変更してもレコードは取得されません(「他のフィールドのコピー」のフィールドも更新されませんので、何も起こっていないように見えます)

ちなみに、1件に決まる場合はこのように取得が成功します。同時に「ほかのフィールドのコピー」で一緒にコピーするフィールドが変更されます。

では、取得されないときはどうしようもないのか?
というと、そうではなくて、どのレコードを取得するのかをレコード選択画面で手動で選択すればルックアップを取得することはできます。

でもどうせならこのレコード選択画面を表示せずにサクッとルックアップを取得したいですよね。
それを実現するには次のような要件があります。
- ルックアップのコピー元フィールドに「値の重複を禁止する」が設定されている
- ルックアップのコピー元フィールドに重複した値が登録されないような運用がされている
1 あるいは 2 を満たしていれば、問題ないんですが・・
どちらも満たせないとなると、取得できるレコードが複数ある(あるいは、それを許可している)ということになります。

そうすると自動的にレコードを決定・取得ができないので、ルックアップの選択画面でレコードを選択せずには取得できないのです。。
これはカスタマイズによってどうにかできることではないので、kintoneアプリのルックアップの設定・運用・データなどを見直していただかない限りどうしようもありません。。
適切な形で設定・運用できるよう注意して設定してみてください〜
値の重複禁止を設定しないとエラーになりますよっ
ここまでの話とは別に、ルックアップのコピー元フィールドに「値の重複を禁止する」が設定されていない場合に問題となるのが、kintone REST API の共通仕様の制限事項です。
レコードの登録や更新をするAPIでルックアップフィールドの値を変更する場合、ルックアップフィールドの「コピー元のフィールド」は、「レコード番号」フィールド、または「値の重複を禁止する」を設定したフィールドを指定してください。
レコードを操作するAPI にこのように記載があります。
これは、カスタマインで言うところの「レコードを追加する」「レコードを更新する」といった「やること」をつかったレコード追加・更新でルックアップフィールドに値を入れる場合に、ルックアップフィールドの「コピー元のフィールド」では「値の重複を禁止する」の設定をしてくださいね、というもので、これを行っていないとエラーになります。
例えば、kintoneアプリのレコード詳細画面で、ボタンを押したらルックアップに値をセットしなおす、という単純なカスタマイズがあるとします。

そしてルックアップのコピー元フィールドで「値の重複を禁止する」が設定されていないと、

こういったエラーが発生するのです。

これはサポートにお問い合わせいただく件数としてはかなり多い気がしています。
ただ、これ、文章のみで伝えるのは結構骨が折れるのでして・・
サポートサイトにページをご用意しております!
参考にしてみてください!
「ルックアップを取得しなおす」を使っているのに、ルックアップが取得できません。
「ルックアップの参照先から値をコピーできません」というエラーが出ました。
なお、注意したいのは、上の方で書いた、
- ルックアップのコピー元フィールドに「値の重複を禁止する」が設定されている
- ルックアップのコピー元フィールドに重複した値が登録されないような運用がされている
これなんですが、2 の状態にしていたとしてもこの制限事項は回避できません!
あくまで「「値の重複を禁止する」が設定されている」という状況でなければいけないので、注意が必要です。
終わりに
今回はkintoneのルックアップのカスタマイズを行う時に直面する制限についてのお話でした。
理解できるとなんのことないですが、沼にいってしまうと大変ですからね。
1つずつクリアにしていきましょ〜(と、自分に言い聞かせます…笑
それでは育児休業明けにまたお会いしましょう( ´ ▽ ` )
投稿者プロフィール

-
gusuku Customine サポートのひとりです
いつかまた 京都大作戦 に行きたいです
いつか RISING SUN ROCK FESTIVAL にも行ってみたいです