以下リンクより、営業支援パックの顧客管理アプリで関連レコードのレコード数をスペースフィールドにセットすることはできました。
ただ、スペースフィールドではなく、数値フィールドにセットし、レコード詳細画面と一覧画面上でレコード数を表示させる方法がよく分からず教えていただけますと幸いです。
現在顧客管理アプリにて設定しているJSファイルは以下の2つとなります。
(上記リンクでご紹介いただいているものをそのままコピーして使っております)
■RelatedRecordsFieldManager.js
window.RelatedRecordsFieldManager = (function(fieldCode){
var RelatedRecordsFieldManager = function(fieldCode){
this.fieldCode = fieldCode;
this.property = this.fieldProperties[fieldCode].referenceTable;
this.targetAppId = this.property.relatedApp.app;
}
RelatedRecordsFieldManager.prototype = {
selfAppId: kintone.app.getId(),
records: [],
limit: 500,
getFieldProperties: function(){
return kintone.api(kintone.api.url('/k/v1/app/form/fields', true), 'GET', {
app: RelatedRecordsFieldManager.prototype.selfAppId,
}).then(function(response){
RelatedRecordsFieldManager.prototype.fieldProperties = response.properties;
});
},
query: function(record){
return (
this.property.condition.relatedField +
'="' +
record[this.property.condition.field].value +
(this.property.filterCond ? '" and ' : '"') +
this.property.filterCond
);
},
getRecords: function(record){
var _this = this;
return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', {
app: this.targetAppId,
query:
this.query(record) +
' order by ' + this.property.sort +
' limit ' + this.limit +
' offset ' + this.records.length
}).then(function(response){
_this.records = _this.records.concat(response.records);
return response.records.length === _this.limit ? _this.getRecords(record) : _this.records;
});
}
}
return RelatedRecordsFieldManager;
})();
■sample.js
(function () {
"use strict";
kintone.events.on(['app.record.detail.show', 'app.record.edit.show'], function (event) {
// まず、アプリのフィールド設定を取得しておく
RelatedRecordsFieldManager.prototype.getFieldProperties().then(function () {
// 関連する案件一覧のレコードを取得する
(new RelatedRecordsFieldManager('案件一覧'))
.getRecords(event.record)
.then(function (records) {
// space1に合計費用の合計値を表示
kintone.app.record.getSpaceElement("space1").innerHTML = records.reduce(function (sum, record) {
return sum + Number(record.合計費用.value);
}, 0).toLocaleString();
});
// 関連する活動履歴のレコードを取得する
(new RelatedRecordsFieldManager('活動履歴'))
.getRecords(event.record)
.then(function (records) {
// space2にレコード数を表示
kintone.app.record.getSpaceElement("space2").innerHTML = records.length;
});
});
});
})();
恐れ入りますが、よろしくお願いいたします。