Jamfで勤怠の稼働時間を取得して労務課題を解決する!
これは勤怠管理において、客観的記録に基づいて勤怠確認が必要という労務課題を解決するドタバタストーリーである。
はじまりは管理部門からの依頼だった。客観的な記録に基づいて、勤怠を確認しなければいけない、ということで、どうしましょう?という依頼。(ちなみにこの依頼をSlackでもらったのは、シンジさんの引越し祝いに行く途中だった)
そのとき、一緒に日本の製品を提案されたのだが、macOSアップデートのときとか大変そうだなぁとか、いやいやその製品はちょっとと思いながら、六本木の街を歩いてた。
上記のような日本の製品は最近使ったことないので、その場で良い悪いは判断できないのだが、昔のオンプレのイメージがあった。そして、自社のポリシーとして極力、サーバ運用が発生する製品やシステム連携ができない製品は導入したくないなって考えていた。
実際、調べてみたらサーバが必要だったので、うーんこれは提案された製品は無理そうだなと。
じゃあ、なにか他の解決策が必要だ。
この課題、リモート前提かつmacOSでの解決事例はまだあまり世の中にでていない。
リモート前提で考えると、データは基本的に従業員のPCから取るしかない。じゃあPCの何のデータを使うかってお話。最初は、よくある起動とシャットダウンを考えたが、弊社の社員はだいたいスリープして業務をおわるw
なので、スリープのログから取ろうと思った。そしてある程度の精度で、スリープログからも集計できるようになった。
そのときのブログがこれ
それからこの取得したデータをどう集約しようか考えてたら、ふと思いついて、こんなのも作った(というか、午前2時になにしてる、オレ)
しかし本人が確認というより、労務が勤怠を確認する必要がありそうってことでNGになった。
さらに数日後に別件でJamfとGASを調べていて、たまたま神ブログを発見。これだ!いいじゃんっておもった。
神ブログ!
Jamfでアプリの稼働時間をとれることを知らなくて、この方法を思いつかなかった。(ちなみに、ググったときに上位にこのブログがあり、少し下に私のブログがあって内容だけでなく、検索順位でも負けてたw)
そして翌日
神ブログにコードが全文掲載されていたので、そのままサクっと実装して、テストでデータを出してみた。依頼者に見せてみたところ、反応も良さそうで、いったんこれで仮運用をすることにした。
しかし、弊社の場合、Jamfにはデバイスの使用者名の情報を入れている。それならばと、使用者の情報も取得するようにコードを修正した。
個別のコンピュータ情報を取得し、そこから登録されている使用者の名前を取るために、以下を追加した。
// 個別のコンピュータの情報を取る
const _comResponse = UrlFetchApp.fetch(API_URL + 'computers/id/' + computer.id, options);
var _comres = JSON.parse(_comResponse.getContentText('UTF-8'));
// 使用者の名前を取る
var realname = _comres.computer.location.realname;
出力結果
うん、いい感じ!
ということで、だいたいこれでよさそう。あとは労務の人がチェックしやすいように、会話してスプレの形式を変えるぐらいだろう。
ということで、解決完了。
追記
あれからまた少し改善して、勤怠システムと突合しやすいように従業員IDを作ったり、労務が実行できるように管理メニューから実行できるように変更しました。
この記事が気に入ったらサポートをしてみませんか?