調整さんの候補日程を入力するのが面倒なのでPythonにやってもらうことにした
調整さんの候補日程の入力フォーマット
調整さんは、とても簡単にスケジュール調整ができるツールだと思う。
とっても便利だし、簡単だと思う、 けど、、面倒くさがりなひとには、それでも面倒くさい。
調整さんを毎月のシフト希望調査に使う場合
「毎月のシフト希望調査」という用途から、入力すべき候補日程は簡単な規則で表すことができる。 私の場合は、以下の要件になった。
- 火水金は10:00-12:00, 13:00-16:30, 16:00-19:00の3枠
- 土は9:00-12:00, 13:00-17:00の2枠
- 月木日と祝日は休業日
調整さんのコメントの入力すら面倒になってきた
調整さんは親切なので、コメントの入力もとっても簡単にできる。 けど面倒くさがりなひとには、それでも面倒くさ(略
コメント欄に書くことも大体決まっているので、これも自動生成することにした。
スクリプト
import jpholiday import datetime opened = [x for x in '火水金土'] weekname = [x for x in '月火水木金土日'] shift_weekday = ['10:00〜', '13:00〜', '16:00〜'] shift_end_weekday = ['12:00', '16:30', '19:00'] shift_weekend = ['9:00〜', '13:00〜'] shift_end_weekend = ['12:00', '17:00'] def makeshift(dt): if (weekname[dt.weekday()] in opened) and (jpholiday.is_holiday(dt) is False): datestr = dt.strftime('{}/{}({}) '.format(dt.month, dt.day, weekname[dt.weekday()])) if dt.weekday() < 5: return '\n'.join([datestr + x for x in shift_weekday]) else: return '\n'.join([datestr + x for x in shift_weekend]) else: return '' def makedescription(): s = '○はOK、△はなるべくいれないでほしい、✗は無理。\n' s += '平日のシフト時間は' s += '/ '.join([x+y for (x, y) in zip(shift_weekday, shift_end_weekday)]) s += '、休日のシフト時間は' s += '/ '.join([x+y for (x, y) in zip(shift_weekend, shift_end_weekend)]) s += '\n' s += '注意事項や調整注文等はコメント欄に必ず書いてください。' return s if __name__ == '__main__': year = 2019 month = 5 enddate = 31 filename = './data/%s月.txt' % month # 候補日程の作成 liststr = '' for date in range(1, enddate+1): line = makeshift(datetime.date(year, month, date)) if len(line) > 0: liststr += line + '\n' # 書き出し with open(filename, 'w') as f: f.write(makedescription() + '\n') f.write(liststr)
祝日判定にはjpholiday
を使わせていただいた
pip install jpholiday
できる。
datetime.date
型データを投げると祝日かどうかを判定してくれるスグレモノ。
他にも色々できるみたいです。
使い方
main
内の以下の変数を埋め、python3
で実行するとファイルが生成される
year
:シフト生成したい年month
:シフト生成したい月enddate
:シフト生成したい月の最終日(を自動取得してくれないところはダサいので直したい)filename
:生成した候補日程とコメントを書き出すファイル名
感想
これでシフト調整の作成も一瞬だね!