2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

freeeAPIで勤怠打刻を自動化したい! その2

Posted at

今回は、スクリプト作成編です(雑にまとめました。後で気が向いたら or 質問や指摘をもらったら、追記します。)

動機

人は、ルーチンワークを意識すると言うのが、苦手な生き物である!!(主語でかい)
みなさん、よく月末に勤怠を入力してくださいって、言われません?
言われない?自動化してる?

僕は割と言われます
毎回、「すみません(汗」と、言って勤怠を入れるのである。
もう、3回言われたら、自動化して対策するのが、エンジニアってものですよ。
(財布も月3回、家に忘れたから、忘れるものと割り切って対策組んだし)
ちょうど、人事労務freeeにはAPIが公開されているので、こいつで勤怠打刻を自動化しましょう!
ちなみに、言語は会社で使っているPythonです。
(PowerShell版もあります。)

Python版:https://github.com/EndoHizumi/timerecordeeer
PoiwerShell版:https://github.com/EndoHizumi/tr4ps1

セットアップ

事前にPython 3.6以降をインストールしてください。

スクリプトでfreee APIを叩けるようになるまで

  1. timerecordeeerのリポジトリから、スクリプトを一式を持ってきます。
    1. git cloneするなり、ZIPファイルでダウンロードするなり、お好きな方法で。
  2. freeeからアクセストークンを取得します。
    3. 使い方をみながら、適当なコマンドを入力すると、ブラウザが開きます。
    4. freeeのアカウントでログインすると、アクセストークンが表示されます。これをコピーします。
    5. 表示されたアクセストークンを、config.jsonのaccess_tokenの欄にペーストします。
    6. config.json_templeteからリネームしておつかください

これで、スクリプトを使ってfreeeのタイムカードAPIをアクセスする準備ができました。

自動でスクリプトを起動させる

  1. Windowsでローカルグループポリシーエディタを起動して、[ユーザーの構成] -> [Windowsの設定] -> [スクリプト(ログオン・ログオフ)]で、ログオンとログオフ時に起動するスクリプトに、このスクリプトを登録します。
    image.png

  2. スクリプト名にpythonと入力、スクリプトのパラメータにスクリプトのフルパスと引数を入力します。
    3.スクリプトのパラメータの入力例
    3. ログイン(出勤)時;timerecordeeer.py "clock_in"
    4. ログアウト(退勤)時;timerecordeeer.py "clock_out"

使い方

python timerecordeeer.py [emboss|find] [引数]

# サブコマンドがembossのときに、入力できる引数
[clock_in|break_begin|break_end|clock_out]
# clock_inが出勤・break_beginが休憩開始・break_end休憩終了・clock_outが退勤です

# サブコマンドがfindのときに、入力できる引数
yyyy-mm-dd -f 勤怠ファイルのパス

スクリプトの仕様

  • コマンドラインからスクリプトを叩いて、人事労務freeeのタイムレコーダー登録APIで、勤怠を打刻する。
  • 受ける引数は、freeeAPIに準拠して、出勤・休憩開始・休憩終了・退勤の4種類を受ける。
  • 時刻は、スクリプトの起動日

想定する使い方として、このスクリプトをWindowsのログイン・ログオフ時に起動して、勤怠を打刻します。
休憩については、時間がまちまちなので、大人しくfreeeのスマホアプリの方で打刻します。
固定なら、タスクスケジューラに入れて自動にするんですが。

おまけ

アクセストークンの再取得

config.jsonのaccess_tokenを空にする(シングルクオーテーションだけにする)と、再びアクセストークンを取得することができます。
ログインしてくださいやアクセス権限がありませんというエラーになった時は、この方法でアクセストークンを再取得してください

外部設計

コマンド

python timerecordeeer.py [emboss|find] [引数]

# サブコマンドがembossのときに、入力できる引数
[clock_in|break_begin|break_end|clock_out]

# サブコマンドがfindのときに、入力できる引数
yyyy-mm-dd

レスポンス

freeeAPIのレスポンスをそのまま返す

内部設計

スクリプトといいつつ、雰囲気で責務分担しておく。
逆にごりごり1ファイルで書いていくと後のモチベーションに関わるので。

構成

inner.png
(Draw.io初めて使ったけど、GUIがあるのね、便利)

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?