前提
かなり特殊な前提ですが…
- 私はアルバイトで、ジョブカンで自分で申請してる
- ジョブカンで申請した時間と同じ時間を経理の人に伝える
- ジョブカンの申請はあくまで補助で、基本は経理の人に伝えた時間が今月バイトした時間とみなされる
という状況です。
もちろん予め何時間働くという前提のもとに申請しているわけですが、例えばマクロを組む仕事が入るとかすると想定時間をオーバーすることがあるわけです。オーバーして申請を追加して...としてると、自分が今月何時間働いたかがわからなくなるというわけです。
そこで、
ジョブカンに何時間申請したかをスピーディーに算出してぇ... と思うようになりましたとさ。
方針
最初はAPIとかスクレイピングとかしてみるか!?と思ったけど、経験値の浅さゆえ面倒くささが勝ちギブ。
そのときふと、画面をコピペして正規表現で時間を処理できるんじゃね? と気づきました。
ジョブカンの画面はこんな感じで、
D&Dで文章をさらってゆく。
画面をコピペするとこんな感じの文章がゲットできる。はい、正規表現を使いましょう。興味本位の暇つぶしで やっていてよかった。
ゲットした文章を「今月何時間働いた.txt」として保存する。
今月何時間働いた?.py
import re, datetime
def sabun(t1,t2):
return (datetime.datetime.strptime(t1, '%H:%M') - datetime.datetime.strptime(t2, '%H:%M')).seconds
time = []
with open(rf"今月働いた?.txt", encoding="utf-8") as f:
texts = list(map(lambda s: s.strip(), f.readlines()))
for text in texts:
if "時刻指定" in text:
dates = re.findall("\d\d:\d\d", text)
time.append(sabun(dates[1],dates[0]))
h = sum(time) // 60 // 60
m = sum(time) // 60 % 60
print(f"今月は、{h}時間{m}分")
input()