はじめに
2024年4月1日、建設業でも本格的に時間外労働の上限規制が始まりました。2019年から施行されているこの規制ですが、弊社のような建設の事業などは5年間の猶予期間が与えられていました。ですが、2024年4月、猶予期間が終わり、我々も残業時間の管理方法に関して見直しを求められる状況となりました。
そこで弊社では Looker Studio を使用し、部下や社員の残業時間の見える化を行いました。
概要
担当いたしましたのは2024年新卒入社の私です。大学では地域政策について学んでおり、後藤組でアルバイトをさせていただくまではワードとパワポをちょこっと触る程度の文系大学生をしておりました。がんばりました。
弊社では kintone をあらゆる業務に使用しており、出勤退勤の打刻も例外ではありません。
今回は kintone に入る打刻データを毎朝定期実行でスプレッドシートに転記し、それを Looker Studio に表示しました。
スプレッドシートへの転記
弊社では様々な業務マニュアルが作成され、それらがドライブで共有されています。今回の kintone からスプレッドシートへの転記もマニュアルに従って行いました。
拡張機能にマニュアルのコードをコピペしてあとは定期実行をセットするだけ。
のはずだったのですが、全社員分の打刻データは膨大でマニュアルにあるコードでは実行時間が6分を超えてしまいトリガーでの実行が行えませんでした。
そこで ChatGPT に相談をしました。
・修正前のコードでは、各セルに個別に setValue メソッドを使用して書き込みを行っているため、 API 呼び出しが多くなり、実行時間が長くなります。
・writeSheetFromRecords 関数でスプレッドシートに書き込む際、setValues メソッドを使用してデータを一括で書き込みます。これにより、セルごとに個別に書き込むよりも大幅に高速化されています。
とのアドバイスをいただき実行時間を短縮することができました。
以下、修正コードの一部です。
一括書き込み部分の処理
var data = records.map(function(record){
return array_kintone_fields.map(function(kintone_field){
return record[kintone_field].value;
});
});
sheet.getRange(2, 1, data.length, data[0].length).setValues(data);
Looker Studio の作成
今回、 Looker Studio にて見える化したいものは以下の2つです。
・社員の残業時間
・社員の乖離労働時間(後ほど詳しく記載します。)
では、作成していきます。
社員の残業時間
弊社の kintone の勤怠管理アプリには打刻時間のデータだけでなく、残業申請や休出申請、休暇申請など様々なデータが入っております。
残業申請は申請した時間がそのまま数値として入っておりますので転記されたデータを合計し、絞り込みの期間を当月に設定すれば当月の残業時間をリアルタイムで見ることができます。
社員の乖離労働時間
乖離労働時間とは
申請上の労働時間と打刻から計算される労働時間の乖離とします。
もう少し具体的に説明します。先ほどの社員の残業時間のデータだけでは社員の残業申請データ依存のため、残業申請をサボられると意味がなくなってしまいます。残業した分に関しては残業申請をしていただかなくてはならないため、社員がしっかりと残業申請を行っているかも見える化する必要があります。
労働時間+残業時間+休出時間
申請上の労働時間の内訳は上記のとおりであり、労働時間は出勤日数*7.5時間で計算され、残業時間と休日出勤に関しては個々に申請をしてもらう必要があります。
つまり、残業時間や休出時間の申請漏れがあると打刻データと申請上の労働時間に乖離が生じてしまうということです。
一方の打刻データですが弊社の打刻データには "打刻開始時間" と "打刻終了時間" のほかに "自己申請開始時間" と "自己申請終了時間" があります。自己申請時間のほうは修正や打刻忘れがあった際に個々人が修正するデータです。
こちらから計算する打刻ベースの労働時間が以下になります。
(DATETIME_DIFF(IFNULL(自己申請退勤時間, 打刻退勤時間),IFNULL(自己申請出勤時間, 打刻出勤時間), MINUTE)-120)/60
IFNULL 関数を使用し、修正に使う自己申請の時間を優先しました。あとはここに有給申請の時間を足します。
申請上の労働時間は別でスプレッドシートにデータがありますので社員番号でデータ統合を行います。そして作成した三つのフィールドを使い、その差を求めます。
打刻労働時間(有給無)+有給取得時間-申請労働時間
これで乖離労働時間が求まりました。あとは見やすい形にグラフや Looker Studio 全体を整え、完成です。
細かいデータは載せることができませんがこのような雰囲気に仕上がりました。
おわりに
今回は Looker Studio を使用し、残業時間と乖離労働時間の見える化を行いました。誰でも簡単にデータ統合やグラフの作成が行える Looker Studio はデータの見える化や業務改善に役立つと改めて感じました。
個人的な反省点としては作成に時間がかかりすぎた点です。まだまだ関数の扱いや、転記のコード編集など不慣れな点も多く、上司をはじめとする有識者にフィードバックをもらえばよかったと反省しております。
Qiita もうまく利用して、様々なところから知識やスキルを貪欲に吸収していきます。