アプリ間の連携

何を実現したいのかを書きましょう

アプリAの「キー」「A」項目、アプリBの「キー」「B」項目について
アプリA及びアプリBの「キー」項目をキーに
アプリAからBにレコード追加もしくは更新をかけたいです。(キー→キー・A→Bに値をセット)

発生した問題やエラーメッセージを具体的に書きましょう

更新をかけることができません。

実行したコードをコピー&ペーストしましょう

(function() {
  'use strict';

  // アプリAのフィールドコード
  var fieldCodeA = 'A'; // アプリAの連携項目のフィールドコード
  var keyFieldCodeA = 'キー'; // アプリAのキー項目のフィールドコード

  // アプリBのフィールドコード
  var fieldCodeB = 'B'; // アプリBの連携項目のフィールドコード
  var keyFieldCodeB = 'キー'; // アプリBのキー項目のフィールドコード
  var appIdB = '123'; // アプリBのアプリID

  // レコード追加・更新のイベント処理
  kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], function(event) {
    // アプリAのキー項目の値を取得
    var keyValueA = event.record[keyFieldCodeA].value;
    var ValueA = event.record[fieldCodeA].value;
    
    // アプリBのレコードを取得
    var queryB = keyFieldCodeB + '="' + keyValueA + '"';
    var paramsB = { app: appIdB, query: queryB };
    kintone.api(kintone.api.url('/k/v1/records', true), 'GET', paramsB).then(function(response) {
      if (response.records.length > 0) {
        // アプリBのレコードが存在する場合は更新
        var recordB = response.records[0];
//        recordB[fieldCodeB].value = ValueA;
        var updateData = {
          app: appIdB,
          updateKey: recordB.$id.value,
          record: {}
        };
        updateData.record[keyFieldCodeB] = { value: keyValueA };
         updateData.record[fieldCodeB] = { value: ValueA };
//        var paramsUpdateB = { app: appIdB, updateKey: recordB.$id.value, record: recordB };
        kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', updateData, function(resp) {
          // 更新成功時の処理
          console.log('アプリBの更新が成功しました');
        }, function(error) {
          // 更新失敗時の処理
          console.log('設定値「fieldCodeB」:', fieldCodeB);
          console.log('設定値「keyFieldCodeB」:', keyFieldCodeB);
          console.log('設定値「response」:', response);
          console.log('設定値「updateData」:', updateData);
          console.log('アプリBの更新に失敗しました', error);
        });
      } else {
        // アプリBのレコードが存在しない場合は新規作成
        var recordB = {};
        recordB[keyFieldCodeB] = { value: keyValueA };
        recordB[fieldCodeB] = { value: event.record[fieldCodeA].value };
        var paramsCreateB = { app: appIdB, record: recordB };
        kintone.api(kintone.api.url('/k/v1/record', true), 'POST', paramsCreateB).then(function(responseCreateB) {
          console.log('アプリBのレコードを新規作成しました:', responseCreateB);
        }).catch(function(errorCreateB) {
          console.error('アプリBのレコード新規作成エラー:', errorCreateB);
        });
      }
    }).catch(function(errorGetB) {
      console.error('アプリBのレコード取得エラー:', errorGetB);
    });

    return event;
  });
})();

をやってる間に

return event;

に行っちゃってる感じですかね:eyes:!?!?

↓↓この記事を参考にされると良いかも知れません:laughing:

kintone.api(~~~

return 

書く場所がポイントです:eyes:

↓こちらの質問&回答も参考になるかもです(><)!

1 Like

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