Boost!for kintone
POINTS

解説

01

ルックアップでセットされるのは「レコード」ではなく「値」

kintoneの標準画面でルックアップを使うときは、コピーしたいレコードを画面で選択しています。これは、kintoneに「このレコードの中から、必要な値をコピーしてください」と指示している状態です。

一方、プラグインやカスタムJavaScript、APIでは、kintoneへの指示が変わります。プログラムから出せる指示は「このレコードからコピー」ではなく、「この値をルックアップフィールドに入れるので、一致するレコードを探して、その内容をコピーしてください」というものです。

つまり、カスタマイズでのルックアップの操作は、レコードの選択ではなく、検索キーとなる値の入力だと考える必要があります。

02

なぜ「値の重複を禁止する」設定が必要なのか

入力した値に一致するレコードが参照元のアプリに複数あると、kintoneはどのレコードをコピーすればよいか判断できません。その結果、次のようなことが起こります。

  • 画面で操作した場合は、候補が複数あるため値を確定できず、レコードの選択画面がもう一度表示されます。
  • APIでレコードを追加・更新した場合は、コピー元のフィールドの値が重複しているためコピーできない、といったエラーになり、処理が止まります。

どちらも、kintoneが対象のレコードを1つに絞り込めず、安全にコピーできないと判断して、処理を止めているために起こります。

03

コピー元のフィールドを一意にする

この問題を解決するには、コピー元のフィールドの値から、レコードが必ず1つに決まるようにします。方法は次の2つです。

  • 参照元のアプリで、コピー元のフィールドの設定の「値の重複を禁止する」にチェックを入れる。
  • 必ず一意になるレコード番号を、コピー元のフィールドに指定する。

どちらかを行えば、値とレコードが1対1で対応するので、カスタマイズからでもルックアップが正しく実行されます。