こんにちは、エムザス ITサービス部です。
エムザスではkintoneを用いたアプリ開発やプラグイン開発をしています。
今回は、実際に私が経験したアプリ作成時、設定時の注意事項に関して共有したいと思います。
お知らせ①
🌟無料&登録不要でプラグインのお試しが可能!🌟
kintoneユーザーの皆さん!
エムザスのkintoneプラグインはもう試しましたか?🤔
エムザスでは以下のようなプラグインを開発しています!👇
デモ環境で、ほとんどの機能が今すぐお試しいただけます✨
さらに、お客様のドメインで無料で3ヶ月間、すべての機能を試すこともできます!🎉
それでは、本題に入ります!
事象
アプリのルックアップフィールドに自動で値をセットしたときに意図する値がセットできていなかったということがありました。
具体的には、あるフィールドの値が変更されたときに自動的にルックアップフィールドに値がセットされるようにしたのですが、セットされた値でルックアップを取得してもセットしたかった値になるときとならないときがありました。

再現するために上のキャプチャのように、社員設定(文字列1行)と社員_ルックアップ(ルックアップ)を用意し、社員設定の値が変更されたら社員_ルックアップに値を自動でセットするJavaScriptを設定しています。

社員_ルックアップで参照している社員情報はこの5つのレコードが存在する状態です。
この状態で社員設定に適当に文字を入力すると社員_ルックアップに値がセットされます。
■パターン1
一つ目のパターンは、固定で「田中三郎」をセットするようにJavaScriptで設定しています。

(function() {
'use strict';
kintone.events.on('app.record.edit.change.社員設定', function(event) {
event.record.社員_ルックアップ.value = "田中三郎";
return event;
});
})();
この状態で取得をクリックすると以下のようになり、「田中三郎」のルックアップの参照が取得されます。

■パターン2
二つ目のパターンは、固定で「鈴木一」をセットするようにJavaScriptで設定しています。

(function() {
'use strict';
kintone.events.on('app.record.edit.change.社員設定', function(event) {
event.record.社員_ルックアップ.value = "鈴木一";
return event;
});
})();
この状態で取得をクリックすると以下のようにルックアップのレコードを選択するウィンドウが表示され、パターン1とは異なり取得を押しただけではルックアップの参照が取得されません。

「鈴木一」のデータがルックアップとして自動でセットされることが理想なのですが、この状態だと選択しなおさなければならなくなっています。
原因
社員の選択画面が表示されていることからもわかる通り、「鈴木一」という文字列だけでは「鈴木一」と「鈴木一郎」どちらもがヒットしてしまい、どちらのルックアップを取得してよいかkintoneはわからないということです。
対応方法
これはkintoneの仕様上変えられないことなので、こちらの選択肢を変えることで対応をしました。
氏名や一般的な名称だけでルックアップを設定すると被る可能性があるので、社員番号などの重複しないものと連結させて前方からの検索で被りが発生しないように工夫しました。
今回の例だと、
鈴木一 → 0001_鈴木一
鈴木一郎 → 0002_鈴木一郎
このようにすることで「0001_鈴木一」をセットすれば一つのレコードに絞り込むことができます。
ただしフィールドによっては無理矢理な命名の仕方になってしまうこともあるので、設計の段階でルックアップを自動でセットすることがわかっている場合は、フィールドや値のルールに注意をしておいた方が良いかもしれません。
kintone標準ではルックアップ先の値を変えたときに自動で参照されているルックアップフィールドを更新する機能はなく、後々の変更は手間がかかりトラブルにもつながります。
まとめ
kintoneは便利なサービスですが、できることできないこと、得意なこと不得意なことがあります。
事前に知っておけば、不得意なことを避けて実装したりプラグインも考慮に入れて構成を考えられます。
実際にkintoneを触るのはもちろんのこと、情報収集も欠かさず行っていけるとよいですね。
ありがとうございました。