REST API(POST)とレスポンスのレコードへの格納

REST API使用後、かえってきたrespから、POSTしたレコードURLを生成し、POST元アプリのレコードへ格納しようとしています。

アドバイスをお願いします。

 

背景・実現したいこと

①REST APIを用いて、AアプリからBアプリに新規レコードを追加する。

②上記①レスポンスのレコードIDの値から、追加したレコードのURLを生成する。

③生成したレコードのURLを、Aアプリの文字列フィールドに反映する。

 

エラー情報

①及び②までは実現済みです。

③ができていない状況です。

 

下記コードのreturn event直前で、Aアプリの文字列フィールドのに代入しても反映はされませんでした。

Uncaught ReferenceError: respUrl is not defined

(スコープの関係かなと思います。)

 

また、respUrl生成後直下でAアプリの文字列フィールドのに代入をすると、(app.record.detail.process.proceed)eventオブジェクト内では、しっかりと代入されています。

 

利用したソースコード

不要な部分は削除しています。

(function(){

  'use strict';

  kintone.events.on('app.record.detail.process.proceed', function(event){

    let subDomain = "xxxxx";

    let aAppId = kintone.app.getId(); // Aアプリのid

    let bAppId = xxx; // Bアプリのid

    let nextStatus = event.nextStatus.value;

    let record = event.record;

    let recordId = record.$id.value;

    let nowUrl = `https://${subDomain}.cybozu.com/k/${aAppId}/show#record=${recordId}`; //現在のAアプリのレコードURL

    // 次のステータスがxxxのときに、Bアプリでレコードを追加する

    if (nextStatus === "xxx"){

      var params = {

        "app": bAppId,

        "record": {

        }

      };

      

      kintone.api(kintone.api.url('/k/v1/record', true), 'POST', params, function(resp) {

        // success

        let respRecordId = resp.id; // Bアプリで追加されたレコードのid

        let respUrl = `https://${subDomain}.cybozu.com/k/${bAppId}/show#record=${respRecordId}`; // Bアプリで追加されたレコードのurlの生成

      

      }, function(error) {

        // error

      });

    }

    return event;

  });

})();

おそらくコードが色々省かれている気はするのですが、

一つ考えられる原因としては新規登録(POST)するときに、Proceedが完了してしまうのが原因だとおもいます。

kintone.Promiseをつかって、ちゃんとPOST処理を待ってあげる必要があるとおもいます。

https://developer.cybozu.io/hc/ja/articles/360023047852-kintone%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8BPromise%E3%81%AE%E6%9B%B8%E3%81%8D%E6%96%B9%E3%81%AE%E5%9F%BA%E6%9C%AC

イメージとしては上記リンクの「Promiseを利用する(1回)」のように return kintone.api… とするのがポイントです。

 

ご連絡ありがとございます!

kintone.Promiseを使って、記述してみます。