レコードの一括更新について疑問

いつも大変お世話になっております。

第11回 kintone REST APIを利用したレコード更新

を参考にして自社ように作成しております。

以下の2箇所だけ自社用に変えました。

変更箇所:

①20行~21行

|

lookup: {

value: record.lookup.value

|

顧客先名コード: {

value: record.顧客先名コード.value

②55行

query: 'lookup = ’ + event.record[‘レコード番号’].value

query: ‘顧客先名コード = "’ + event.record[‘顧客先名コード’].value + ‘"’

⇒これで起きている不思議な現象として、管理者が顧客マスターアプリを編集したら、”ルックアップの更新が完了しました!”というメッセージは出るが、他のユーザーがマスターアプリを編集したら、一回目は普通に保存される。もう一度編集画面を開いて、保存をクリックすると”ルックアップの更新が完了しました!”というメッセージがやっと出る。なんででしょうか?なにかアドバイスいただけることは可能でしょうか?どうぞよろしくお願い致します。

goroさん

「第11回 kintone REST APIを利用したレコード更新」を見ると、かなり古い記事で現時点では処理方法に問題があります。

2015年当時は、保存時イベントの Promise 対応もされていないため、このような実装になっていたと思われます。

イベント処理とAPI処理の実行タイミングによって、「更新されない」などの問題が生じる可能性があります。

例えば、保存時イベント完了後に詳細画面に画面遷移しますが、それまでAPIが完了しないとエラーになります。

たまたま、保存時イベント完了・API完了・画面遷移の順番で実行された場合のみ、うまく動作します。

API の対象レコード数などにより、うまくいくケースといかないケースが出てくると思います。

現在はイベントが Promise 対応されていますので、今回の場合は「‘app.record.edit.submit’」等ではなく、

「‘app.record.edit.submit.success’」等のイベント処理で、 Promise 対応した API 処理を行いましょう。

※「‘app.record.edit.submit’」イベントで、Promise 対応すると、レコード更新前の状態でAPIで他アプリレコードを更新することになります。

参考:kintone API で Promise を使ってみよう!