コンウェイとピーターの狭間で

ずっと放置しつつQiitaに移ったりしていましたが、スマートホームについて書いていこうかと

Outlook2013でMessageIdで検索する サブフォルダ対応

以前の記事でOutlook 2013 でMessage IDで検索する方法を書きましたが、 サブフォルダを含めた検索に対応できていませんでした。

http://banban525.hatenadiary.jp/entry/2015/03/27/092824

調べてみても良い方法はどうも見つからず、マクロかアドインになりそうな感じですね。 まずは実装の前に実現性の調査を。

ベタにアドオン内で検索する

ここに検索方法が書いていました。

Searching emails from an Outlook add-in | TaskConnect - Outlook add-in for Team Foundation Server

要するにフォルダ毎にFind("~0x1035001E=***")で探すんですね。

サブフォルダまで自動で探してくれよと思いますが、検索はフォルダ単位なんですね。

メリットは検索まわりが自前のコードで書けるので柔軟性があること。

心配なのはパフォーマンス。

マクロでユーザ定義フィールドに入れる

Outlookにはユーザ定義フィールドというメッセージ毎にテキストフィールド等が増やせる仕組みがあるようです。

またメール受信時に処理するマクロやアドインも作れるそうで、 受信時にユーザ定義フィールドにメッセージIDを入れておけば検索できます。 検索は高度な検索からユーザ定義フィールドを指定すればOK。 サブフォルダも検索できます。

ただ、ユーザ定義フィールドはフォルダ毎なんですよね。 全てのフォルダに対して同じユーザ定義フィールドを作らないといけないみたい。

Outlookさん、どんだけフォルダの独立性が高いんだよ

また、普通の検索ではユーザ定義フィールドはヒットしません。 メール一覧の上にある検索フィールドで検索できるのはタイトルと本文くらいのようですね。 高度な検索を設定するのがわりと面倒です。

メリットはOutlookの検索が使える点。

マクロでタイトルにメッセージIDを付けちゃう

上と同じように受信時のマクロやアドインを使います。

メッセージIDをユーザ定義フィールドではなく、タイトルの後ろにつけてしまうという禁じ手です。

これならメール一覧の上のクイック検索(正式名称は知らない)でもヒットします。 サブフォルダにも対応できるし、ユーザ定義フィールドを作る必要もありません。

割といいアイデアだと思うのですが、タイトルや本文はメールのメインコンテンツであり、 マクロやアドインで加工するのはアウトな気がするんですよね・・・。

間違って文字化けさせたり、消してしまったら目も当てらない。

メリットはOutlookの検索機能、特にクイック検索が使えること。 デメリットは、なんか気持ち悪いこと。

どれにするの?

とりあえず、下の順で作ってみるつもりです。

  • ベタにアドオン内で検索する
  • マクロでタイトルにメッセージIDを付けちゃう
  • マクロでユーザ定義フィールドに入れる