概要
毎日YWTの日報メールを作るのがだるい...
メールのテンプレート作成をしても、件名に今日の日付を毎回打たなきゃいけない...
PythonでOutlookのメールを自動作成できないか試してみた記事になります。
初めての投稿のため、色々とおかしいところがありますがそこはスルーで...
YWTについてはこちら
やりたいこと
- 日報メールのYWTテンプレートを自動作成したい
- 件名に今日の日付をいれたい
- 昨日の日報メールのTの<次にやること>を今日の日報メールのYの<やったこと>にする
3については昨日のTを今日のYに書くことが多いので、
必要にしている人は自分以外にいるのか微妙...
コード
import win32com.client
import datetime
import re
# 昨日の日報メールの本文を取得する
today = datetime.datetime.now()
object = win32com.client.Dispatch("Outlook.Application")
ns = object.GetNamespace("MAPI")
folder = ns.GetDefaultFolder(6) # 6はOutlookの受信トレイフォルダを表している
days_cnt = 1
flag = False # 昨日の日報メールが見つかったらTrue、見つからなかったらFalse
# 昨日の日報を探す
while flag == False:
yesterday = today - datetime.timedelta(days=days_cnt)
yesterday_sub ="日報[{}月{}日]".format(yesterday.month,yesterday.day)
for i in reversed(folder.Items):
if yesterday_sub in i.Subject:
text = i.Body # 昨日の日報メールの本文を入れる
flag = True # 昨日の日報メールが見つかったのでTrue
break
days_cnt += 1 # 日付の日報メールが見つからなかったら、その日付の昨日にする
# <次にやること>の内容を抜き出す
result = re.findall('<次にやること>[^<]+',text)
b = result[0].replace('<次にやること>', '')
# 「・~~~」の内容を抜き出す
result2 = re.findall('・.+\r\n',b)
sentence = ""
for i in result2:
sentence += i
# メール送信
object = win32com.client.Dispatch("Outlook.Application")
mail = object.CreateItem(0)
mail.BodyFormat = 1
# 宛先の設定 To,CC,Bcc
mail.To = "yyy@vvv.com" # 自分のメールアドレス
# mail.cc = "yyy@vvv.com"
# mail.Bcc = "yyy@vvv.com"
mail.Subject = "日報[{}月{}日]".format(today.month,today.day) # メールの件名
# メールの本文
mail.Body = """\
お疲れ様です。
日報を送ります。
<やったこと>
"""+sentence+"""\
<わかったこと>
<次にやること>
以上です
"""
mail.Display(True) # 作成したメールの表示
# mail.Send() # メール送信
結果
昨日の日報メールはこちら
#### 今日の日報を自動作成赤線は自分のメールアドレスです
まとめ
OutlookのメールをPythonで自動作成できた。
これで日報メールを作る手間が少し省ける!
時間が合ったらリファクタリングをしたい!
TeamsやMattermostで日報をYWTで提出することがあるので、この2つでも自動作成してみたい。