PythonでOutlookの予定を一覧取得したい

タイトルの通りです。

背景

今の職場では毎朝その日の予定をメールで送るというルールがあります。毎回手動でやろうと思うと、例えば会議が5個入っていたら、その5個に対して開始時間、会議内容、終了時間を転記する必要があります。

それに加えて会議時間以外の予定(A資料作成、B会議準備、等)も記載して…となるとストレスしかありません。

だいたいこんなことやらせてるから非効率で業績も、、、、、なんて愚痴は置いておいて、ルールはルール、守る必要があります。

でも、できるだけ楽にしたい、そんな思いからPythonでコードを書いてみようと思いました。

今回の目標

今回はメール作成まではせず、汎用的に使えるように、Outlookから予定を取得してprint()で出力するところまで実施します。

コード

早速コードです。モジュールは特にインストールせずにできました。必要そうなら適宜してください。

import win32com.client
import datetime

### Create Outlook Calendar Object
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
calender = outlook.GetDefaultFolder(9)

# Get schedules
items = calender.Items

output_items = []

# Define target period for schedules to collect
start_date = datetime.date(2022, 6, 1) # 2020-10-19
end_date = datetime.date(2022, 6, 15) # 2020-10-23

for item in items:
    if start_date <= item.start.date() <= end_date:
        output_items.append(item)

# Show results.
i = 1
for output_item in output_items:
    print(f"No.{i}--------------------")
    print("Subject: ", output_item.subject)
    print("Location: ", output_item.location)
    print("Start Time: ", output_item.start)
    print("End Time: ", output_item.end)
    print("Details: ", output_item.body)
    i += 1

自動化効果

私は上記コードをもう少しいじって、タスクスケジューラでPC起動時にメールが作成・表示されるように設定しました。PCを起動したらメールの中身だけ確認して送信ボタンを押すだけなのでとても楽になりました。

今までかかってた時間

  • 会議予定の転記:15秒x5個=75秒
  • 予定の記載:15秒x3個=45秒
  • その他の記載(TOやCC、件名等):60秒
  • 合計/日:180秒=3分
  • 合計/月(20営業日):60分=1時間

月に1時間ですよ?業務開始メールにかける時間が!自分で言うのもあれですが、タイピングは早いほうだと思っているので、他の人はもっと時間を使っていると思うんです。

ちなみに過去の私のプロジェクトでは1人5,000円/時くらいで要員調達していたので、月に5,000円x人数分のコストをかけて業務開始メールを書いてるのです。

まぁ私の今の場合は、お客さんにやらされているのでそのコストもお客さん持ちなので良いですが、逆の立場になった時にはちゃんと考えたいですね。

よっさん
  • よっさん
  • 当サイトの管理人。ニューヨークの大学を飛び級で卒業。その後某日系IT企業でグローバル案件に携わる。マレーシアに1.5年赴任した経験を持つ。バイリンガルITエンジニアとしていかに楽に稼ぐか日々考えている。

コメントする

メールアドレスが公開されることはありません。