Outlook データを Python で読む (win32com)

データ分析、特に、テキスト分析の案件では、大量にあるデータとして、よく出てくるのが社内文書と電子メール。電子メールは特に会社の指定などでツールが決まっていることが多い。中でも厄介なのは、Microsoft Outlookの中だ。

このデータを取得する手法として、エキスポート機能が使えると思いきや、メールヘッダ情報を含んでいなかったり、メールアドレス情報に余計なものが含まれていたり、そもそもCSVデータ出力できず、MSG形式になったり、特定フォルダの下を再帰的に取得できなかったりと結構面倒。

そこで、Pythonで直接Outlookデータから、From,To,CC,サブジェクト,本文,ヘッダを出力するプログラムを書いてみた。今思うと、VBAのほうが素直だった気がするが、あまり気にしない。

以下に公開しているので参照のこと。

github.com

一番わからなかったのは、定数を使えるようにすることと、プロパティメソッドの利用方法。 皆さん同じことで困っているようで、結構すぐに見つかった。

定数を使えるようにするには、win32comでインタフェース用のライブラリを作成する必要がある。 そのために、python makepy.pyを実行する

ヘッダ文字列取得のために、COMオブジェクトを直接呼出しが必要だった。 ここは、仕方ないのでVBAの方法と同じ方法をそのまま利用している。

ヘッダ情報は、Internet Mail Headerがそのまま取得されているので、一般的なパーサーを利用できる。このサンプルも上記に乗せている。

では、データ取得を楽しんでください。