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を付けちゃう
- マクロでユーザ定義フィールドに入れる