Empty

2013年4月から社会人になりました。

調整さんのために適当な日程を出力するスクリプト

概要

日常的なタスクの効率化が好きだったりします。ちょっとした作業改善のために作った簡単な小さなツールも日々の成果物として公開いこうかなと。今回はその第一弾。

"調整さん"を立てるときの日程候補一覧出力するスクリプト

調整さんを立てるときに、日程候補の一覧を入力する必要があるのだが、いちいち「日付を書いて、曜日をつけて改行」と繰り返したりする必要があるのだが、規則的なルールなのに、手打ちするのもどうかな~と思って、その部分を出力してくれるスクリプトを書いたよという話。凄い簡単なスクリプトだが晒してみる。

スクリプト

#!/usr/bin/env python
# coding:utf-8

import datetime

"""
調整さんのために日程一覧を出力してくれるスクリプト.
http://chouseisan.com/
"""

# Configuration
WEEKDAYS = ["月", "火", "水", "木", "金", "土", "日"]
SCHEDULE_DISTANCE = 7 # 出力期間(days)
EXCEPT_DAY = [] # 除外日 e.g. [3,4] 3日と4日は外す.
EXCEPT_WEEKDAY = [] # 除外曜日 e.g. [5,6] 土日は除外
START_HOUR = 18 # 予定開始時刻
END_HOUR = 22 # 予定終了時刻
TIME_DISTANCE = 2 # 時刻の間隔

# startdate
start_date = datetime.datetime.now()
#start_date = datetime.datetime(YEAR, MONTH, TODAY)
end_date = start_date + datetime.timedelta(SCHEDULE_DISTANCE - 1 )


# easy validation
if not (end_date - start_date).days > 0:
    raise ValueError("end_dateはstart_dateより未来の日付を指定してください")


# Display (調整さんフォーマット)
tmp_date = start_date
while (end_date - tmp_date).days >= 0:
    if tmp_date.day in EXCEPT_DAY or \
            tmp_date.weekday() in  EXCEPT_WEEKDAY:
        # 除外日・除外曜日
        pass
    else:
        hour = START_HOUR
        while hour < END_HOUR:
            weekday_str = WEEKDAYS[tmp_date.weekday()]
            print "%02d/%02d(%s) %02d:00~"  % (tmp_date.month, tmp_date.day, weekday_str, hour )
            hour += TIME_DISTANCE
    tmp_date += datetime.timedelta(1)


# End of Script #

出力(一週間分)

03/06(火) 18:00~
03/06(火) 20:00~
03/07(水) 18:00~
03/07(水) 20:00~
03/08(木) 18:00~
03/08(木) 20:00~
03/09(金) 18:00~
03/09(金) 20:00~
03/10(土) 18:00~
03/10(土) 20:00~
03/11(日) 18:00~
03/11(日) 20:00~
03/12(月) 18:00~
03/12(月) 20:00~

こんなしょうもないツールの紹介でした。以上。