GETで取得した値が反映されない

お世話になっております。

大変初歩的な質問ですが、GETで取得した値を数値フィールドへ挿入できません。

処理内容

フェーズが完了かつ、Noに値が入っていない時、Noの最大値を取得し、その値に+1して返す

問題点

以下のようにコードを書きましたが、Noに値が反映しません。

IF文中にconsoleを表示させていますが、ここでは値を取得できています。

ですので値のsetが問題かと思うのですが、問題箇所がわかりません。

ご教示頂けますと幸いです。

(function () {
  'use strict';
  var events = ['app.record.create.submit', 'app.record.edit.submit'];
  kintone.events.on(events, function (event) {
    if (event.record['フェーズ']['value'] === '完了' && !event.record['No']['value']) {
      var params = {
        app: kintone.app.getId(),
        query: 'order by No desc limit 1',
        fields: ['No']
      };
      kintone.api(kintone.api.url('/k/v1/records', true), 'GET', params).then(function (resp) {
        var rec = kintone.app.record.get();
        rec.record['No']['value'] = parseInt(resp.records[0]['No']['value']) + 1;
        console.log(parseInt(resp.records[0]['No']['value']) + 1);
        kintone.app.record.set(rec);
        return event;
      }).catch(function (resp) {
        event.error = resp.message;
        return event;
      });
    }
  });
})();

mionixさん

お世話になっております。

レコード追加編集画面の保存実行前イベントで非同期処理の完了を待つには、kintone.events.on()のコールバック関数でkintone.Promiseオブジェクトをreturnする必要があります。
https://developer.cybozu.io/hc/ja/articles/201941984#step2

kintone.api()はsuccessCallbackを省略すると、kintone.Promiseオブジェクトをreturnします。
mionixさんのコードでもkintone.api()のsuccessCallbackを省略して書いているので、11行目のkintone.apiの前にreturnをつければ、kintone.events.on()のコールバック関数でkintone.Promiseオブジェクトをreturnしたことになります。

return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', params).then(function (resp) {

https://developer.cybozu.io/hc/ja/articles/202166310#step1

下記リンクの「例)見積もりアプリ(カスタマイズするアプリ)のレコード保存時、商品アプリ(アプリID: 1)から商品A(レコードID: 1)の⾦額を取得し、その値を見積もりアプリに登録する」がわかりやすいかと思います。
https://developer.cybozu.io/hc/ja/articles/360023047852

また、kintone.app.record.get()で取得したrecオブジェクトではなく、eventオブジェクトに対して値の変更を行うとよいかと思います。

event.record['No']['value'] = parseInt(resp.records[0]['No']['value']) + 1;

江田篤史 様

お世話になっております。

ご教示頂き、誠にありがとうございます。

大変わかりやすく、理解することができました。

また機会がありましたらよろしくお願いいたします。

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。