いつもお世話になっております。
現在、有給休暇や遅刻や早退といった勤怠の管理アプリを製作しております。
有給休暇や遅刻の申請を行う用のアプリと、集計を行う用のアプリの2つがあり、申請を行う用のアプリの一覧画面のヘッダー部に年月が入るテキストボックスと集計ボタンを設け、年月を記載し、集計ボタンを押すことにより、対象の年月のデータを社員ごとにかつ、有給休暇で何時間分、遅刻で何時間分、早退で何時間分かを集計を行って、集計用アプリに社員ごとにレコードを自動作成を行おうとしております。
この際、対象の年月のデータを社員ごとにかつ、有給休暇で何時間分、遅刻で何時間分、早退で何時間分かという集計のjavascriptの書き方がわかりません。
どのようにして実装することができるでしょうか。
K.S様
お世話になっております。 cstapの江田と申します。
現状、records.jsonで直接合計値を取得するようなことはできません。 対象の年月のレコードを全件取得してループを回して、if文などを用いて社員や種別に分けて足し算で合計値を出すことになるかと思います。
流れとしてはこんな感じになるかと思います。
(function(){"use strict";kintone.events.on("app.record.index.show",function(event){varemployees=[//社員のリスト。何かしらの方法で取得。{id:1,name:"山田太郎"},{id:2,name:"田中花子"},];kintone.api('/k/v1/records','GET',{app:kintone.app.getId(),query:'日付 \>= "2017-12" and 日付 \< "2018-01"'},function(response){varresults=employees.map(function(employee){varresult={id:employee.id,paid\_vacation:0,lateness:0,leave\_early:0};response.records.forEach(function(record){if(employee.id!=record.社員ID.value){return;}switch(record.種別.value){case"有給休暇":result.paid\_vacation+=Number(record.時間.value);break;case"遅刻":result.lateness+=Number(record.時間.value);break;case"早退":result.leave\_early+=Number(record.時間.value);break;}});returnresult;});console.log(results);/\* =\>[{ id: 1, paid\_vacation: 8, lateness: 10, leave\_early: 0 }, { id: 2, paid\_vacation: 2, lateness: 4, leave\_early: 20 }] \*/});});})();
なお、申請アプリのフィールドはこのような形式を想定しています。