0
3

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 3 years have passed since last update.

[Python]YWTの日報をOutlookメールで自動作成してみた

Posted at

概要

毎日YWTの日報メールを作るのがだるい...
メールのテンプレート作成をしても、件名に今日の日付を毎回打たなきゃいけない...
PythonでOutlookのメールを自動作成できないか試してみた記事になります。
初めての投稿のため、色々とおかしいところがありますがそこはスルーで...

YWTについてはこちら

やりたいこと

  1. 日報メールのYWTテンプレートを自動作成したい
  2. 件名に今日の日付をいれたい
  3. 昨日の日報メールの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つでも自動作成してみたい。

参考

メールのテンプレート作成
PythonでOutlookのメール送信

0
3
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
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?