手元で試してみると、ルックアップで取得できない「データがありません」のメッセージが出ても、disabledは効く様子ですね。
実は記載コードの他にカスタマイズの内容があれば、見た目上このケースで思った動作になってないという可能性は考えた方が良いかもしれません。非同期処理との兼ね合いがどこかにはたらいている可能性もありそうですが、プラグインを含めて同じイベントで非同期処理が入ってたりしないでしょうか。
試してみると良さそうに思われるのは、disabled処理を行う部分だけイベントを切り出して、あえて分離するというのがあります。disabledにする処理から記述する方が良いかと思います。
kintone.events.on(‘app.record.edit.show’, function(event){
var record = event.record;
record[‘触らせたくないフィールド’][‘disabled’] = true;
return event;
}
kintone.events.on(‘app.record.edit.show’, function(event){
var record = event.record;
var moji = record[‘文字フィールド’][‘value’];
if(moji != “”){
record['ルックアップ']['value'] = moji;
record['ルックアップ']['lookup'] = true;
record['文字フィールド']['value'] = "";
}
return event;
}
あとは、あまりよろしくないですが、無理やりセットするためにsetTimeout()でget/setをくくってしまうというのも試してみると良さそうです。
kintone.events.on(‘app.record.edit.show’, function(event){
var record = event.record;
var moji = record[‘文字フィールド’][‘value’];
if(moji != “”){
record['ルックアップ']['value'] = moji;
record['ルックアップ']['lookup'] = true;
record['文字フィールド']['value'] = "";
}
setTimeout(function(){
var obj = kintone.app.record.get();
obj.record[‘触らせたくないフィールド’][‘disabled’] = true;
kintone.app.record.set(obj);
}, 0);
return event;
}
原因を探るのにもう一つ押さえておきたいのは、ルックアップによる値取得処理自体が非同期で動作しているという点ですが、ここまでの情報では、今回はあまり関連ないかと思います。