関連レコードの項目を集計

お世話になっております。
JavaScript超初心者にて恐縮ですが、はじめてこちらへ投稿させていただきます。

タイトルの通り、関連レコード内の「実績」項目を集計して表示させたいが、
実績が入力されていても「¥0-」と表示されてうまく集計ができません。
下記の記事を元に、条件は外した状態で行ないました。

https://developer.cybozu.io/hc/ja/articles/203030394-%E9%96%A2%E9%80%A3%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E9%A0%85%E7%9B%AE%E3%82%92%E6%9D%A1%E4%BB%B6%E4%BB%98%E3%81%8D%E3%81%A7%E9%9B%86%E8%A8%88

コードは以下の通りです。

(function() {
    “use strict”;

    //レコードの編集、詳細画面で適用する
    var events = [
        ‘app.record.detail.show’,
        ‘app.record.edit.show’
    ]
    kintone.events.on(events, function(event) {
        var record = event.record;
        var client_rid = event.recordId;
        var related = kintone.app.getRelatedRecordsTargetAppId(‘関連レコード一覧A’);
        var offset = 0;
        var loop_end_flg = false;
        var records = new Array();
        while(!loop_end_flg){
            var query = ‘案件番号="’ + client_rid +
                ‘" limit 100 offset ’ + offset;
            query = encodeURIComponent(query);
            var appUrl = kintone.api.url(’/k/v1/records’) + ‘?app=’+ related + ‘&query=’ + query;

            // 同期リクエストを行う
            var xmlHttp = new XMLHttpRequest();
            xmlHttp.open(“GET”, appUrl, false);
            xmlHttp.setRequestHeader(‘X-Requested-With’,‘XMLHttpRequest’);
            xmlHttp.send(null);

            //取得したレコードをArrayに格納
            var resp_data = JSON.parse(xmlHttp.responseText);

            if(resp_data.records.length > 0){
                for(var i = 0; resp_data.records.length > i; i++){
                    records.push(resp_data.records[i]);
                }
                offset += resp_data.records.length;
            }else{
                loop_end_flg = true;
            }
        }

        var amount = 0;
        for (var i = 0; i < records.length; i++) {
            amount = amount + parseFloat(records[i].A値.value);
        }

        var divTotalAmount = document.createElement(‘div’);
        divTotalAmount.style.fontWeight = ‘bold’;
        divTotalAmount.style.textAlign = ‘right’;
        divTotalAmount.style.fontSize = 12;
        var wString = String(amount.toFixed(0).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, ‘$1,’));
        divTotalAmount.innerHTML = “\” + wString + “-”;
        kintone.app.record.getSpaceElement(“TotalAmount”).appendChild(divTotalAmount);

        return event;

    });
})();

フィールドコードは以下のとおり設定しています。

・集計対象の関連レコード:“関連レコード一覧A”
・関連付けのキーとなるフィールド:“案件番号”
・集計対象となる実績のフィールド(リンク先アプリ):“A値”

うまく集計できない原因と方法を、どなたかご教示いただけないでしょうか。
どうぞ宜しくお願いいたします。

Suzukiさん

お疲れ様です。

 

リンク先の記事通りにアプリを作成し、

提示していただいたコード、フィールドコードをアプリに設定したところ、

問題なく値の取得ができました。(条件を外した状態で値の取得に成功しました。)

 

エラーの内容がわからないので、正確に答えられませんが、

関連付けのキーとなるフィールドはルックアップ先からコピーされるフィールドになっていますでしょうか?

 

一度デバッグしていただき、エラーの内容を返信いただければ詳細にわかるかと思います。

デバッグは以下の記事が参考になると思います!

https://developer.cybozu.io/hc/ja/articles/207613916

HANSAさん

コメントいただきありがとうございます!
エラーの確認方法までご案内いただき、大変助かりました。
デバックを行なってみましたが、エラーは表示されませんでした。。
また、関連付けのキーとなる"案件番号"フィールドは、ルックアップ先からコピーされるものではありません。

1つ気になっているのが、先の投稿で記載したリンク先の記事は
「顧客ごとの自動採番(https://developer.cybozu.io/hc/ja/articles/203236240)」の続編とのことなので
自動採番の記事も読んでみたのですが、自動採番の必要はなく設定は不要だろうと判断しました。
もしかして何らかの設定をしなければならなかったのでしょうか・・・?

Suzukiさん

 

質問時に提示していただいた記事(https://developer.cybozu.io/hc/ja/articles/203030394)の注意事項に書いてありますが、

顧客情報レコード番号(Suzukiさん設定だと案件番号)は「顧客ごとの自動採番」の記事で使用していたフィールドを使用しているようです!

 

このフィールドはルックアップ先からコピーされるフィールドになっているので、

 

この設定をしていないと、

var client_rid = event.recordId;

var query = ‘案件番号="’ + client_rid + '" limit 100 offset ’ + offset;

この部分のクエリ条件がうまく設定できておらずレコードが取得できていない状況になっていると思います。

 

記事では、ルックアップ先のレコード番号を顧客情報レコード番号にコピーしてきているようです。

HANSA さん

ご返信いただきありがとうございます!

コメントいただいたように顧客情報レコード番号が「顧客ごとの自動採番」の記事で

使用していたフィールドである事をふまえ、色々と試してみたのですがうまくいきませんでした。

コードのどの部分を、どのように修正すべきか?という初歩的な知識も持ち合わせていないため、

きちんと基本知識を得た上で改めて試してようと思います。

貴重なお時間いただき、ありがとうございました!