# PowerShell でジョブカン勤怠管理を操作する

- URL: <https://krymtkts.github.io/posts/2022-09-24-psjobcanattendance.html.md>
- Date: 2022-09-24
- Author: krymtkts
- Tags: powershell

現職について半年が経とうとしている。幸運なことに毎日忙しく過ごしており打刻もままならん(~~単にいつも忘れてるだけ~~)。
なので、またアレを作った。打刻スクリプトだ。

[krymtkts/PSJobCanAttendance](https://github.com/krymtkts/PSJobCanAttendance)

現職は[ジョブカン勤怠管理](https://jobcan.ne.jp/)を使ってるので、また新しく作る必要があった。
とはいえ[krymtkts/PSMFAttendance](https://github.com/krymtkts/PSMFAttendance)をベースに開発(コピペ)しているので、構造的には同じ。
異なるのはスクレイピングの部分だけといって過言ない。

個人的に考える目玉機能は以下の 2 つ。

1. OTP 対応
2. 一括編集

1 については、認証時に OTP を取得する `ScriptBlock` 差し込めるようにしてある。現職では都合が良いことに 1Password を使わせえてもらえてるので、 [op](https://developer.1password.com/docs/cli/get-started/) を使って取得した OTP が渡せるのだ。
`ScriptBlock` がない場合は入力を求めるプロンプトになる。

2 については、自分の現職における勤務実績の入れ方を考えると、絶対必要だったものだ。
現職はフレックスでかなりゆるいのでほぼ勤怠管理無いに等しいが、打刻は求められている。ただ自身が怠惰なせいもあり、3 週間くらい打刻を忘れていて〆前に急いで入力するなんてことが多発している。これを楽にこなすためにも、今回は絶対に一括編集機能を作りたかった。休憩時間が自動入力の設定じゃないようなので、打刻漏れしたときの作業の重さは尚更だ。

以下のようにパイプを使った一括編集ができる。端的に言って、楽過ぎてヤバい(打刻しろ)。

```powershell
@(12..16;20..22) | %{get-date "2022-09-$($_) 08:15:00+0900"} | Edit-JobCanAttendances -TimeRecordEvent work_start -AditGroupId 10
```

上記の様な感じで試しに 3 週ほどの実績をドバドバと書き込んでみたが、リクエストが拒否されることもなく使えて一安心だった。
今回の打刻スクリプトを作るにあたり、毎度のごとく利用規約はチェック済みだ。[利用規約｜ジョブカン勤怠管理](https://jobcan.ne.jp/aup)を確認したが、こういうスクリプトを作ることに関し問題なさそうだった。

本当は 2022 年夏頃には一通り作ってたのだけど、その後 2 ヶ月位使わずに来てたので、この週末でまとめ上げた。来週から実際に使ってみて、熟れてきたら PowerShell Gallery に公開しようと考えている。

今回作ってみて気づいたこと。[krymtkts/PSMFAttendance](https://github.com/krymtkts/PSMFAttendance) を作ったときは、同サービスの前例が 1 つくらいしかなかったのに、今回は前例を探せば結構ヒットした。
「No.1 勤怠管理」の名は伊達じゃないな！と思わせるものがあった(何様)。

---

[前に作った Money Forward クラウド勤怠のやつ](/posts/2021-11-27-psmfattendance.html)は、前職を離れて実行環境がないからもうメンテもできないし、そろそろ Archive してもイイ気がする。
バグ残ったママだけど直して動作確認できないからしゃーない。
