fum125’s diary

IT全般に関する技術メモなど

Outlook2016 を Python から制御してみる (7) - 最終回

次に作ってみたいもの

学習開始からここまでたどり着くまでに2年かかってました。。。
次に食指が動くのにどれぐらいかかるか分かりませんが、今のところ、挑戦してみようかなぁと思っているものを挙げておきます。

Outlook 外部エディタ

むかしから Emacs 使いだったため、Outlook でメールを書く際に以下のようなイライラを感じています。

  • 等幅フォントで字を揃えたいのに、微妙にずれる。
  • 左側に2文字分のインデントを自動で付けて、行頭を揃えたい。
  • 80文字ぐらいで行を自動折り返ししたい。ただし、エディタ任せではなくて自分で制御しながら。

そこで、メール作成中は Emacs を外部エディタとして使いたい。

プログラムの構想はこんな感じです。

  1. メール作成画面は、通常通り Outlook で起動する。
  2. ボタンか、またはショートカットキーを押すと、Python スクリプトが動き始める。
  3. Python スクリプトでは、メール作成画面の Body や To, Cc を読み取って、tmp テキストファイルに書き出す。そのあと、tmp テキストファイルを引数にして、Emacs を起動する。
  4. Emacs 上でメール編集を行い、終わったら書き込み終了する。
  5. PythonEmacsの終了を検知したら、tmp ファイルの内容を Outlook メール作成画面にコピーする。
メール重複削除

Outlook 内に重複して存在するメールを削除するツールです。
自作する利点は、「重複の判定ルールを、自分自身のお好みで決められる」ことかと。

※ 2018/6月現在、自分用として使えるレベルにはなっていますが、まだ試験中。
大事なメールをバグで削除するわけにはいきませんので、公開はもう少し先に。。。

今のところは以下のような処理で動かしています。

(1) メールヘッダから Message-ID を取得します。
  メールヘッダの取得には、PropertyAccessor を使ってヘッダ全体を取得した後に、改行区切りで "Message-ID" の部分を拾っています。
  また、大文字小文字が混在することがあるので、全て小文字に変換かけてから処理しています。
(2) Message-ID をキーにして、辞書を作ります。
(3) 既に辞書に同一キーがあれば、「それは重複メールである」と判断しています。
(4) いきなりメール削除するのではなく、一度「重複メールフォルダ」に移動しています。
  Python で処理するのはここまで。
  本当に削除するのは、手動にしています。

自動タグ付

メール内容から、自動でタグ (分類項目) をつけていくようにします。

もしくは、一度手動でつけたタグを覚えておき、そのメールの Message-ID を References に持つメールを受け取ると、同じタグをつけていきます。

google 連携

Google タスクや Google カレンダーの内容と Outlook の内容を同期させるツールです。