はじめまして、よろしくお願いいたします。
テーブル内の数値を科目ごとに集計してフィールドに入れたいと思っております。
(() => {
'use strict';
let subTable = '媒体別'; // サブテーブルのフィールドコード
let medium = '媒体'; // 媒体のフィールドコード
let recruitment = '募集区分'; // 募集区分のフィールドコード
let reaction = '対応'; // 対応のフィールドコード
let count = '人数'; // 人数のフィールドコード
let mediumValues = ['媒体A', '媒体B'];
let recruitmentValues = ['グループ', '他社'];
let reactionValues = ['反響', '登録'];
let events = [];
[medium, reaction, recruitment, count].forEach((field) => {
events.push(`app.record.create.change.${field}`, `app.record.edit.change.${field}`);
kintone.events.on(events, (event) => {
let record = event.record;
let sums = {};
mediumValues.forEach((mediumValue) => {
sums[mediumValue] = {};
recruitmentValues.forEach((recruitmentValue)=> {
sums[mediumValue][recruitmentValue] = {};
reactionValues.forEach((reactionValue) => {
sums[mediumValue][recruitmentValue][reactionValue] = 0;
});
});
});
});
record[subTable].value.forEach((row) => {
if (!row.value[medium].value || !row.value[recruitment].value || !row.value[reaction].value || isNaN(row.value[count].value)) return;
sums[row.value[medium].value][row.value[recruitment].value][row.value[reaction].value] += Number(row.value[count].value);
});
Object.keys(sums).forEach((mediums) => {
Object.keys(sums[mediums]).forEach((recruitments) => {
Object.keys(sums[mediums][recruitments]).forEach((reactions) => {
record[`${mediums}${recruitments}${reactions}数`].value = sums[mediums][recruitments][reactions];
});
});
});
return event;
});
})();