他のアプリへレコード合計値を更新

同じアプリ内で注文番号フィールドが同じレコードを探し、該当レコード精算金額のフィールド値を合計したい。
合計した値を他のアプリの出張経費_合計フィールドへ更新したいです。
下記のプログラムでは値が入ってきません。どこが悪いのか教えていただけますでしょうか?

(function() {
“use strict”;

kintone.events.on('app.record.save', function(event) {
    var record = event.record;
    var orderNumberValue = record['注文番号'].value;

    // 同じアプリ内で注文番号が同じレコードを検索
    var appID = kintone.app.getId(); // 現在のアプリID
    var query = '"注文番号" = "' + orderNumberValue + '"';
    kintone.api(kintone.api.url('/k/v1/records', true), 'GET', {
        app: appID,
        query: query
    }, function(resp) {
        // 精算金額の合計を計算
        var totalAmount = resp.records.reduce(function(sum, record) {
            return sum + Number(record['精算金額'].value); // '精算金額' は実際のフィールドコードに置き換えてください
        }, 0);

        // 注文番号表アプリに合計値を更新
        var orderAppID = 12; // 注文番号表アプリのID
        var updateQuery = '"注文番号" = "' + orderNumberValue + '"';
        kintone.api(kintone.api.url('/k/v1/records', true), 'GET', {
            app: orderAppID,
            query: updateQuery
        }, function(searchResp) {
            // 更新するレコードのIDを取得(注文番号がユニークであると仮定)
            if (searchResp.records.length > 0) {
                var updateRecordID = searchResp.records[0].$id.value;
                var updateBody = {
                    app: orderAppID,
                    id: updateRecordID,
                    record: {
                        '出張経費_合計': { // 実際のフィールドコードに置き換えてください
                            'value': totalAmount
                        }
                    }
                };

                kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', updateBody, function(updateResp) {
                    console.log('Expense total updated successfully.');
                }, function(error) {
                    console.error('Error updating expense total:', error);
                });
            }
        }, function(error) {
            console.error('Error searching order app records:', error);
        });
    }, function(error) {
        console.error('Error searching current app records:', error);
    });

    return event;
});

})();

エラーは出てないか見てみたほうがよさそうです。
エラーは出てないが想定通り動かない場合は、まずどこまでうごいているか?をデバッグツールなどで確認するのが第一歩かなとおもいます!

ご指摘ありがとうございます。
イベントは修正したのですが、なぜか更新先アプリのフィールド値が更新されません。

なとか修正できました。デバックの仕方ありがとうございました。

よかったです!
もしよろしければ、何がおかしくてどう直したかなど共有していただくことは可能でしょうか?
コミュニティの知見になるとおもいます!

「いいね!」 1

(function() {
“use strict”;

var TARGET_APP_ID = 12; // 更新対象のアプリID(出張経費が記録されるアプリ)
var ORDER_NUMBER_FIELD_CODE = "注文番号"; // 注文番号フィールドのフィールドコード
var SETTLEMENT_AMOUNT_FIELD_CODE = "精算金額"; // 精算金額フィールドのフィールドコード
var TRAVEL_EXPENSE_TOTAL_FIELD_CODE = "出張経費_合計"; // 出張経費合計フィールドのフィールドコード

// 新規作成または編集でレコードが保存された後に実行
var events = [
    'app.record.create.submit.success',
    'app.record.edit.submit.success'
];

kintone.events.on(events, function(event) {
    var record = event.record;
    var orderNumber = record[ORDER_NUMBER_FIELD_CODE].value;

    // 同じ注文番号を持つレコードを検索するクエリを作成
    var query = ORDER_NUMBER_FIELD_CODE + ' = "' + orderNumber + '"';
    kintone.api(kintone.api.url('/k/v1/records', true), 'GET', {
        app: kintone.app.getId(),
        query: query
    }, function(resp) {
        var records = resp.records;
        var totalSettlementAmount = records.reduce(function(acc, record) {
            return acc + parseFloat(record[SETTLEMENT_AMOUNT_FIELD_CODE].value);
        }, 0);

        // 同じ注文番号を持つレコードをTARGET_APP_IDから検索し、出張経費の合計を更新する
        kintone.api(kintone.api.url('/k/v1/records', true), 'GET', {
            app: TARGET_APP_ID,
            query: query
        }, function(targetResp) {
            var targetRecords = targetResp.records;
            if (targetRecords.length > 0) {
                var params = {
                    app: TARGET_APP_ID,
                    id: targetRecords[0]['$id'].value,
                    record: {}
                };
                params.record[TRAVEL_EXPENSE_TOTAL_FIELD_CODE] = {
                    value: totalSettlementAmount.toString()
                };

                kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', params, function(updateResp) {
                    console.log('出張経費の合計を更新しました。');
                }, function(error) {
                    console.error('出張経費の合計の更新に失敗しました:', error);
                });
            }
        });
    });

    return event;
});

})();

イベントを修正しました。
あとは、フィールドコードが違っていました。
ありがとうございました。

「いいね!」 1

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