お世話になります。
JavaScript初心者で、いつも拝見し参考にしております。
早速ですが、標題の通り、関連レコードの項目を集計ができなく困っております。
こちらのページを参考にし、
条件部分のプログラムを削除しましたが、合計が表示されません。
デバックを行うと「未定義またはNULL参照のプロパティ’length’は取得できません」とのエラーがでます。
アプリ「案件情報」とアプリ「製品情報」を関連つけさせており、
「案件情報」のフィールド【納入先a】 = 「製品情報」のフィールド【納入先】の設定を行っています。
「案件情報」の画面で「製品情報」の【数値】を集計しようとしています。
以下がプログラムになります。
お忙しいところ恐れ入りますが、ご回答の程よろしくお願い致します。
(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_name = record[“納入先a”][“value”];
var related = kintone.app.getRelatedRecordsTargetAppId(‘関連レコード一覧’);
var offset = 0;
var loop_end_flg = false;
var records = new Array();
while(!loop_end_flg){
var query = ‘納入先="’ + client_name + ‘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].数値.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;
});
})();