見出し画像

業務効率化シリーズ:OutlookってPythonからどうやって使うの?

これまでエクセルからPythonを起動する方法について色々と書いてきたのですが、今回はOutlookを対象にして、更に深ぼっていきたいと思います。

具体的には、Outlookを普段、手作業で行っている以下のようなことをプログラムで自動化していくことを目標にします。メールソフトとしてOutlookを使っている方はまだまだ多いかと思いまして、今回の切り口を思いつきました。

1.大量に同じメールを違う人に送りたいときに行うメール送信プログラム
2.特定のフォルダのファイルを保存して、ファイルの確認漏れを防ぐプログラム
3.自分以外の人を招待した会議通知設定を行うプログラム
4.  どの時間にどういった予定が設定されているかの予定確認のためのプログラム

もし、需要があればもっともっと機能を拡張していき、最終的にはエクセル→Python→Outlookを通じて、操作し易い画面から、普段、時間をかけて実施していることを一瞬でできるような状態にしていくことを通して、事務処理作業の削減を目標にしていきたいと思います。

簡単に今回は、PythonでOutlookのメールを作る方法を紹介します。

import win32com.client

outlook = win32com.client.Dispatch("Outlook.Application")
mail = outlook.CreateItem(0)
#メールの作成は0番というルールのため0を指定しています。

mail.to = 'メールアドレス@ドメイン; メールアドレス@ドメイン' 
#2人に送るときには;でつなぎます
mail.cc = 'メールアドレス@ドメイン'
mail.bcc = 'メールアドレス@ドメイン'
mail.subject = 'おはようございます'
mail.bodyFormat = 1
mail.body = '''おはようございます

ああああ。
いいいい。

うううう。

よろしくお願いいたします。
'''
mail.display(True)

これを実行することで、Outlookが立ち上がって、メール送信の前までの状態になります。もしかしたらVBAに詳しい方であれば、VBA自体に似ていることに気づく方もいるかも知れません。その方向けにPythonで実施した内容と同じようなことをVBAでやる場合のコードについても簡単に書いておきました。

個人的には慣れてると言うことが大きいかと思いますが、やはりPythonのほうが解りやすいです。

Option Explicit

#Const LATEBIND = False
#If LATEBIND Then
    Dim olApp As Object
#Else
    Dim olApp As Outlook.Application
#End If


Sub OutlookMail()
Dim OL, NewMail

Set OL = New Outlook.Application
Set NewMail = OL.CreateItem(olMailItem)
NewMail.display
NewMail.To =  'メールアドレス@ドメイン; メールアドレス@ドメイン' 
NewMail.CC = 'メールアドレス@ドメイン'
NewMail.BCC = 'メールアドレス@ドメイン'
NewMail.Subject = 'おはようございます'
NewMail.BodyFormat = olFormatHTML
NewMail.body = 'おはようございます'

End Sub

このような形で同じようなコードを見比べて勉強することも有効ではないかと思います。使う側としてはどちらでも実現できればいいとは思うはずなのですが、作る側としてはメンテナンスや、学習コストを考慮した開発が求められる例として、今後の勉強でも気をつけて行きたい点です。

初回の投稿としてはまずは簡単なコードのご紹介をしました。

次回から具体的な紹介に入っていくので、Outlook×Python力を上げていきましょう。

この記事が気に入ったらサポートをしてみませんか?