kintone plugin series
プラグインやカスタムJavaScriptを使用してルックアップの値を変更する場合の注意点
プラグインやカスタムJavaScriptでルックアップレコードを選択したはずなのに、再びレコード選択画面が表示される。
レコードの追加や更新を行おうとしたら、「値の重複が禁止されていない」というエラーが出たが、どのフィールドの設定を変更すればよいのか分からない。
このページでは、カスタマイズ時に陥りやすいこれらの事象の仕組みと解決策を解説します。
ルックアップでセットされるのは「レコード」ではなく「値」
kintoneの標準画面でルックアップを利用する際、私たちは「コピーしたいレコード」を視覚的に選択しています。これはkintoneに対し、「このレコードの中から必要な値をコピーして下さい」と指示を出している状態です。
しかし、プラグインやカスタムJavaScript、APIを利用する場合、kintoneへの指示は異なります。プログラムが出せる指示は「このレコードの中からコピー」ではなく、「この"値"をルックアップフィールドに入力するから、一致するレコードを探して、その中身をコピーして下さい」というものです。
つまり、カスタマイズにおけるルックアップ操作は「レコードの選択」ではなく「検索キー(値)の入力」であると理解する必要があります。
なぜ「重複禁止」の設定が必要なのか
もし、入力した値に一致するレコードが参照元アプリに複数存在する場合、kintoneは「どのレコードをコピーすべきか」を判断できません。その結果、以下のような挙動が発生します。
-
画面操作の場合:
候補が複数あるため、自動で値を確定できず、再度選択を促す「標準選択画面」が表示されます。
-
APIによる更新・追加の場合:
「コピー元のフィールドに重複した値があるためコピーできない」といったエラー(または一意に特定出来ない旨のエラー)が発生し、処理が拒否されます。
これは、kintoneが「対象レコードを一つに絞り込めないため、安全にコピーができない」と判断し、処理を止めてしまうために起こることなのです。
「コピー元フィールド」を一意にする
この問題を解決するには、kintoneが迷わないように「コピー元フィールド」が必ず一つに定まる仕組みを決める必要があります。
-
方法 A:
参照元アプリの「コピー元フィールド」の設定で、「値の重複を禁止する」にチェックを入れる。
-
方法 B:
システム的に必ず一意となる「レコード番号」をコピー元フィールドに指定する。
これらによって「この値=このレコード」という1対1の関係が保証され、カスタマイズ時でもスムーズにルックアップが実行されるようになります。
料金
Boost!シリーズのプラグインはすべて無料でダウンロードして使用できますが、3ヶ月の試用期間を過ぎると、インストールしているアプリ毎に1日1回、ライセンス購入を促すメッセージが表示されます。このメッセージを表示させずに利用する為には、年額10,000円をお支払頂く必要があります。
Boost!はドメインライセンスになりますので、ユーザー数に上限はありません。
個々の製品単位ではなく、Boost!シリーズ全体としてのライセンスであり料金になります。
Boost! InjectorとBoost! Echoに関しましては、3ヶ月の試用期間を過ぎた段階でライセンスの購入がお済でない場合は、使用が出来なくなりますのでご注意下さい。