テーブル内の科目別の集計

はじめまして、よろしくお願いいたします。

テーブル内の数値を科目ごとに集計してフィールドに入れたいと思っております。

(() => {
  '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;
  });
})();

forEachが正しく閉じられていないようです。

  [medium, reaction, recruitment, count].forEach((field) => {
    events.push(`app.record.create.change.${field}`,`app.record.edit.change.${field}`);

  [medium, reaction, recruitment, count].forEach((field) => {
    events.push(`app.record.create.change.${field}`,`app.record.edit.change.${field}`);
});

 

    mediumValues.forEach((mediumValue) => {
      sums[mediumValue] = {};
      recruitmentValues.forEach((recruitmentValue)=> {
          sums[mediumValue][recruitmentValue] = {};
          reactionValues.forEach((reactionValue) => {
            sums[mediumValue][recruitmentValue][reactionValue] = 0;
          });
        });
      });
    });

    mediumValues.forEach((mediumValue) => {
      sums[mediumValue] = {};
      recruitmentValues.forEach((recruitmentValue)=> {
          sums[mediumValue][recruitmentValue] = {};
          reactionValues.forEach((reactionValue) => {
            sums[mediumValue][recruitmentValue][reactionValue] = 0;
        });
      });
    });

別件の質問については調査中ですのでしばらくお待ち下さい。

mls-hashimoto

ありがとうございます!

別件については、科目が増加するとフォームを増やさざる負えない場合、

フォーム数が500を超えてしまう事から、ご質問させていただきました。

難しい場合、今回のようにドロップダウン「性別」を省いて表示させる方も検討しておりました。

大変お手数ですが、よろしくお願い致します。

 

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