簡単にイベント発火からのフローをまとめてみると、
チェンジイベント発火!
↓
同期処理
↓
async即時関数 → await処理 → 終了
↓
return event;
でチェンジイベント終了
という風にチェンジイベントで起きた処理とasync即時関数で起きた処理は同期しなくなるんですね…
そのため、チェンジイベントでreturn event
しても反映されない!ということが起きます。
そのため、ほぼ答え書いてしまって申し訳ないですが、以下のようにしてあげる必要があると思います。
こちら試してなく素で書いただけなので、試してみてエラーがでたら適時変更してみてください。
kintone.events.on(['app.record.create.change.テーマNo_'], event => {
const record = event.record;
// テーマNoが入力されている場合
if (record.テーマNo_.value) {
var resp = "";
//↓このように即時関数で実行すればエラーになりません。
(async () => {
const body = {
'app': 168,
'query': `テーマNo_= "${record.テーマNo_.value}"`
}
await kintone.api(kintone.api.url('/k/v1/record.json', true), 'GET', body).then((resp) => {
console.log(resp);
const rec = kintone.app.record.get();
if (resp.records.length > 0) {
rec.record.テーマNo_01.value = resp.records[0].テーマNo_.value;
rec.record['テーマNo_01'].lookup = true;
} else {
rec.record['テーマNo_01'].lookup = 'CLEAR';
}
kintone.app.record.set(rec);
});
})();
}
return event;
})
コード解説としては、GETメソッドを.then()
のメソッドチェーンで待ってから、
kintone.app.record.get()
で取得
↓
ルックアップの処理分岐
↓
kintone.app.record.set()
でレコードに反映
って感じですね。
詳しくは