いつも大変お世話になっております。
第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 を使ってみよう!