1
1

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 1 year has passed since last update.

今月はジョブカンに何時間申請したかを正規表現で計算する

Posted at

前提

かなり特殊な前提ですが…

  • 私はアルバイトで、ジョブカンで自分で申請してる
  • ジョブカンで申請した時間と同じ時間を経理の人に伝える
  • ジョブカンの申請はあくまで補助で、基本は経理の人に伝えた時間が今月バイトした時間とみなされる

という状況です。
もちろん予め何時間働くという前提のもとに申請しているわけですが、例えばマクロを組む仕事が入るとかすると想定時間をオーバーすることがあるわけです。オーバーして申請を追加して...としてると、自分が今月何時間働いたかがわからなくなるというわけです。

そこで、
ジョブカンに何時間申請したかをスピーディーに算出してぇ... と思うようになりましたとさ。

方針

最初はAPIとかスクレイピングとかしてみるか!?と思ったけど、経験値の浅さゆえ面倒くささが勝ちギブ。
そのときふと、画面をコピペして正規表現で時間を処理できるんじゃね? と気づきました。

ジョブカンの画面はこんな感じで、
image.png
D&Dで文章をさらってゆく。
image.png
画面をコピペするとこんな感じの文章がゲットできる。はい、正規表現を使いましょう。興味本位の暇つぶしで やっていてよかった。
ゲットした文章を「今月何時間働いた.txt」として保存する。
image.png

今月何時間働いた?.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()

今月のバイト時間は60時間でした。だいたい六万円でしたね。うぅむ...もう一回10万円くれねえかなぁ...
image.png

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?