アプリ間のデータ連携について

現在、以下のような実装を行っていますが、やりたいことが実現できるか分からないため、質問させていただきます。

【実現したいこと】

1.アプリ①のフィールド①が指定の値に変更され、保存が成功する

2.アプリ②にレコードが作成される

3.アプリ②のレコード番号をアプリ①の指定フィールドに格納する ←今回やりたいと思っている部分

 

1,2では以下のコードで動作をしています。

kintone.events.on('app.record.edit.submit.success', function(event) {
// アプリ①のフィールド①が指定の値に変更されたとき
// アプリ②にレコードが作成される処理
}

 

3の部分に関しては、

「アプリ①・アプリ②であるフィールド(例えば電話番号)が一致すれば」アプリ②のレコード番号をアプリ①の指定フィールドに格納する

といった感じでコードを書く方法を考えていたのですが、調べても類似例がなくそもそもプログラミングで実現可能なのか、ルックアップ等kintoneの機能で出来るのかご教授いただけると幸いです。

以下のような形でしょうか。レコード登録(POST)は成功時に返り値から作成したレコードのレコード番号を取得できるので、そのレコード番号を使って保存したレコードに更新をかけることで可能かと思います。

(function() {
  'use strict';

  let targetAppId = 'アプリ②のアプリID';
  let field1 = 'アプリ①のフィールド①';
  let field1Value = 'アプリ①のフィールド①の指定の値';
  let recordIdField = 'アプリ①の「アプリ②のレコード番号」を代入するフィールド';

  kintone.events.on('app.record.edit.submit.success', (event) => {
    let record = event.record, appId = event.appId, recordId = event.recordId;

    if (record[field1].value != field1Value || record[recordIdField].value) return event;

    let postRecord = {
      app: targetAppId,
      record: {}
    };

    return kintone.api(kintone.api.url('/k/v1/record', true), 'POST', postRecord).then((resp) => {
      let putRecord = {
        app: appId,
        id: recordId,
        record: {
          [recordIdField]: {
            value: resp.id
          }
        }
      };

      return kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', putRecord);
    }).then((resp) => {
      return event;
    }).catch((error) => {
      alert(error.message);
      return event;
    });
  });
})();

mls-hashimotoさま、ご回答ありがとうございます。

返信が遅くなってしまい大変申し訳ございません。

 

せっかく丁寧にお答えいただいたところ恐縮ですが、

当初とは違う方法でデータを取ってくることになりました。

今回の実装ではこちらのコードは利用できませんが、また今回のような実装の予定があれば

ぜひ参考にさせていただきたく思います。