2019年の12月頃からリモートワークをしています。
現在勤めている会社では、KING OF TIME という勤怠管理システムを導入していますが、リモートワークなので仕事の開始・終了時に自分で電子的に打刻をしなければいけません。
その出退勤の打刻を忘れていたら、自動的にSlackに通知してくれる仕組みを作ったというお話です。
作ったもの
以下で公開しています。
仕組み
- Selenium WebDriver 経由で Headless Chromeを起動
- 予め設定した自身のKING OF TIMEのログインIDとログインパスワードを自動で入力しログイン
- ログイン後の画面で出勤済みなのか、退勤済みなのかのデータを取得
- 予め設定した普段の出退勤時刻より遅ければ、予め設定した自身のSlackへIncoming WebHook 通知
使い方
GitHub Actionsで起動する方法
- ↑のリポジトリをforkし、GitHubのsecretに必要な設定(KING OF TIMEのログインIDやパスワード、SlackのURL、普段の出退勤時刻)を入れておき、GitHub Actionsを有効にする方法。一番ラク。
- デフォルトで月曜から金曜の日本時間の朝11時・夜22時に起動します
Docker Imageを作って起動する方法
npm/yarnを使って起動する方法
- www.npmjs.com をインストールし、起動するマシンの環境変数に前述の設定を与えておき、パッケージを読み込む方法。メリットはあまりないかな。。
なぜ作ったか
- リモートワークが増えてきて、リモートで打刻する人が多い中、打刻忘れという手間を減らせたらいいな、と。(自分はちゃんと打刻しています)
KING OF TIMEのログインIDとパスワードを入れさせる認証方法ってどうなの?トークン + APIじゃなくて?
一般社員はKING OF TIMEのAPIトークン発行を許されていなかったのでID/PW形式にしました。。。ま、人の手に委ねるわけでもないし大丈夫でしょう。 トークン + API形式の認証方法も欲しければPull Request送ってください!
最後に
打刻はちゃんとしようね