Outlookで予定と実績を管理しているけれど…
私の会社はメール文化なので、Outlookでメールをやり取りし、仕事や会議の予定もOutlookで管理しています。
また、日報や週報での実績報告のために、いつ何をどこまでやったかもOutlookの予定に記録しています。
結果として、Outlookの予定表は予定と実績記録だらけで、目視で管理するのが面倒な状態になります。
週報にその日の業務実績を書く場合も、Outlookの予定表を書き写さないといけません。
私の業務はかなりマルチタスクで1日の予定の数がすごいことになっているので、手作業で確認して書き写すのがとても面倒です。
Pythonを使うとOutlookから予定表をまとめて抜き出すことができるので、あとはテキストファイルなりExcelなりに整形して、日報などにそのまま貼り付けることができます。
本記事ではMicrosoft Outlookのクライアントソフトから、Pythonで予定を抜き出す方法をご紹介します。
##PythonでOutlookの予定表を抜き出す
outlookを操作するためにはwin32com.clientをimportする必要があります。
私はAnacondaを使っていますが、特に追加でインストールしなくてもimportできました。
import win32com.client
次にOutlookのオブジェクトを作成し、予定表と取り出します。
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
calender = outlook.GetDefaultFolder(9) # 「9」というのがOutlookの予定表のこと
このcalenderというのが予定表です。
では早速、期間を指定して予定を抜き出してみましょう。
ここでは【2020-10-19~2020-10-23】の予定を抜き出してみます。
※例として、この期間には2つだけ予定を登録しています。
import datetime
items = calender.Items # このitemsが一つ一つの「予定」
select_items = [] # 指定した期間内の予定を入れるリスト
# 予定を抜き出したい期間を指定
start_date = datetime.date(2020, 10, 19) # 2020-10-19
end_date = datetime.date(2020, 10, 23) # 2020-10-23
for item in items:
if start_date <= item.start.date() <= end_date:
select_items.append(item)
# 抜き出した予定の詳細を表示
for select_item in select_items:
print("件名:", select_item.subject)
print("場所:", select_item.location)
print("開始時刻:", select_item.start)
print("終了時刻:", select_item.end)
print("本文:", select_item.body)
print("----")
件名: 不具合調査
場所: 実験室1
開始時刻: 2020-10-20 10:00:00+00:00
終了時刻: 2020-10-20 11:30:00+00:00
本文: ハングする不具合の調査をAさんと行う。
----
件名: コードレビュー
場所: 会議室3
開始時刻: 2020-10-22 14:00:00+00:00
終了時刻: 2020-10-22 15:00:00+00:00
本文: Bさん、Cさんとと案件1234のコードレビューを行う。
----
予定を抜き出せていますね!
日報などの形式に合わせてprint文を工夫すれば、出力結果をそのままコピペできるはずです。
コードまとめ
最後にコードをまとめて載せておきます。
import win32com.client
import datetime
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
calender = outlook.GetDefaultFolder(9)
items = calender.Items # このitemsが一つ一つの「予定」
select_items = [] # 指定した期間内の予定を入れるリスト
# 予定を抜き出したい期間を指定
start_date = datetime.date(2020, 10, 19) # 2020-10-19
end_date = datetime.date(2020, 10, 23) # 2020-10-23
for item in items:
if start_date <= item.start.date() <= end_date:
select_items.append(item)
# 抜き出した予定の詳細を表示
for select_item in select_items:
print("件名:", select_item.subject)
print("場所:", select_item.location)
print("開始時刻:", select_item.start)
print("終了時刻:", select_item.end)
print("本文:", select_item.body)
print("----")
Microsoft Office関連の自動化
Microsoft Officeに関連する他の自動化シリーズはこちらです。ご興味があればどうぞ!
【自動化】PythonでOutlookメールを送信する
https://qiita.com/konitech913/items/51867dbe24a2a4272bb6
【自動化】PythonでOutlookのメールを読み込む
https://qiita.com/konitech913/items/8a285522b0c118d5f905
【自動化】Pythonでメール(msgファイル)を読み込む
https://qiita.com/konitech913/items/fa0cf66aad27d16258c0
【自動化】PythonでWordの文書を読み取る
https://qiita.com/konitech913/items/c30236bdf47775535e2f