こんにちは。
kintone apiで、
・ボタンを押す
・ルックアップフィールドに値を入力
・保存ボタンを押す
という機能を実装したいです。
その際にルックアップフィールドに代入処理するタイムラグがありますので、setTimeout()を使ってコードを書いているのですが、primiseを使ってルックアップフィールドに値が代入されたら実行するようには出来ませんでしょうか。
よろしくお願いいたします。
// ボタンクリック時の処理
btn.onclick = () => {
// レコードを取得
constabc= kintone.app.record.get();
// ルックアップフィールドに代入
abc.record.syubetu.value ='A';
abc.record.syubetu.lookup =true;
// レコードを返す
kintone.app.record.set(abc);
setTimeout(() => {
// 保存ボタンをクリック
$('.gaia-ui-actionmenu-save').trigger('click');
},1000);
}
1件のコメント
フィールドコードも同じようですが、2日前に回答したスレッド と同じ用件でしょうか?あちらのスレッドに記載した通り、ルックアップの取得を待つような非同期処理はできないので、本当に確実に動作させるのであれば
①ルックアップと同等の機能を自作(レコード取得API)し、Promiseで動作させる
②ルックアップから取得されるフィールドか、ルックアップフィールドのDOMを監視
いずれかになると思います。
需要があるかは分かりませんが、②にあたるものだと以下のようになります。Mutation observer等を使うのがスマートかもしれませんが、Promiseで作ると以下のような形になります(ルックアップ成功時の「参照先から~」や失敗時の「データがありません」を監視します)。fieldElementにはデベロッパーツール等から確認できる、フィールドに割り振られてい番号を適用して下さい(Chromeであればルックアップフィールドの上で右クリック→検証を選択すれば「value-xxxxxxx」と記載されています)。
また、当然ですがkintoneで用意されているのクラス名やDOMを多用しているので、kintoneのアップデート等で都度対応が必要になります。