沢山のメールへの対応を効率化するためのヒント
導入
この記事で述べる手法のはどちらかと言うと、かゆい所に手を届かせるもので、効果は劇的とは言えない。しかし私がメールをさばく際に感じていたフラストレーションは確実に減った。
この手法はOutlook 2003か2007と何らかのウィキを使っていることを前提としている。Outlookのマクロを使うのでOutlook以外のメールソフトではそのまま利用はできないが、手法の考え方はヒントになるのではないかと思う。
背景
私もご多分に漏れず仕事で沢山のメールを受け取るし、沢山メールを出す。返事を出す必要があっても、すぐに返事が書ければ問題はない。そして、出したメールに確実に返事が返ってくるなら問題はない。しかし実際にはそうならないことがしばしばある。
届いたメールに返事を書くために、調べ物や他の人への問い合わせ、その他のすぐには完了しない作業が必要な場合がある。自分が出したメールについても同じことが言えて、メールを受け取った相手は返事を書くために若干の作業が必要なことがある。
解決すべき課題―返事を書くメールを見つけるのに手間がかかる
自分が返事を書くのに必要な作業が終わって、返事を書く際には、受け取ったメールへの返信としたいのだが、そのメールを探すのに手間取ることがある。メールを複数のフォルダーに分類している場合、どのフォルダーに入れたかすぐには分からないかも知れないし、フォルダーに沢山メールがあって、目的のメールを見つけるのに若干の時間がかかるかも知れない。作業中のメールを受信フォルダーに残すという方針の場合、受信フォルダーにたくさんのメールが残ってしまっているかも知れない。
自分が出したメールに返事が欲しいのに、なかなか返事が来ない場合、催促のメールを出すことになる。その場合に私は、自分が出したメールに返信する形で、元のメール全体を引用して「以下の件についてはいかがでしょうか。」と引用部分の前に付ける。この元のメールを見つけるのにも時間がかかることがある。送信済みフォルダーに沢山メールが入っているからである。
この手法が解決しようとしている課題は、返事を書くメールを見つけるのに手間がかかるということである。
課題解決の手段―ウィキの備忘録上でクリックすることでメールを開けるようにする
返事や催促を忘れないように備忘録的なものを活用している人も多いだろう。私はそのために社内の自分用のウィキのページを使っている。
あるとき、備忘録上をクリックしてメールが開けないかと考えた。私は会社ではOutlook 2003を使っている。Outlookは、個々のメールに対してなんらかのIDを付与して管理しているはずで、そのIDを使って、Outlookをリモートコントロールする形でメールを開けるのではないかと思ったのである。
少し調べたところ以下のことが分かった。
- Outlookは個々のメールにエンティティーIDを付与して管理している。
- Outlookがインストールされていると、「outlook:エンティティーID」という形のURLをInternet Explorerで開くと、指定したエンティティーIDを持つメールがOutlookで開かれる。Firefoxに対しても若干の設定作業(後述)をすることで対応可能である。
エンティティーIDが分かれば、それを使った以下のようなハイパーリンクをウェブページに置き、そのリンクをクリックすることで、メールが開ける。
<a href="outlook:12345678901234567890">here</a>
この手法の肝は、ウェブブラウザー上でハイパーリンクをクリックすることで、Outlookにメールを開かせることであり、ウィキは必須ではない。しかし、ウィキを使わないと、outlook:のURLをウェブブラウザーでクリックできる状態で保存するのが面倒だと思う
outlook:のURLを作成するためのOutlookマクロ
エンティティーIDを取得して、Windowsのクリップボードに入力するOutlookマクロが「How to hyperlink to Microsoft Outlook messages」というページにあった。それを若干変更して以下のようなマクロを作った。
Sub PutEntryIDToClipboard() Dim myOLApp As Application Dim myNameSpace As NameSpace Dim myInbox As MAPIFolder Dim currentMessage As MailItem Dim errorReport As String Dim clipBard As String Set myOLApp = CreateObject("Outlook.Application") Set myNameSpace = myOLApp.GetNamespace("MAPI") Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox) ' Figure out if the active window is a list of messages or one message ' in its own window On Error GoTo QuitIfError ' But if there's a problem, skip it Select Case myOLApp.ActiveWindow.Class ' The active window is a list of messages (folder); this means there ' might be several selected messages Case olExplorer For Each currentMessage In myOLApp.ActiveExplorer.Selection ClipBoard = ClipBoard & "<a href=""outlook:" & currentMessage.EntryID & """>here</a>" & vbCrLf Next ' The active window is a message window, meaning there will only ' be one selected message (the one in this window) Case olInspector Set ClipBoard = ClipBoard & "<a href=""outlook:" & myOLApp.ActiveInspector.CurrentItem.EntryID & """>here</a>" & vbCrLf ' can't handle any other kind of window; anything else will be ignored End Select QuitIfError: ' Come here if there was some kind of problem Set myOLApp = Nothing Set myNameSpace = Nothing Set myInbox = Nothing Set currentMessage = Nothing Set DataO = New DataObject DataO.Clear DataO.SetText ClipBoard DataO.PutInClipboard Set DataO = Nothing End Sub
Outlook 2003でこれを使うにはFM20.dllを参照する必要がある。
このマクロを登録しておき、メールが選択された状態で実行すると、Windowsのクリップボードにハイパーリンクのマークアップが入る。そのあとで、ペーストの動作を行なえば、そのハイパーリンクを書き込むことができる。
Firefoxでoutlook:のURLを開くためにはabout:configを開いて以下の項目を設定する。
設定項目 | 値 |
network.protocol-handler.expose.outlook | true |
network.protocol-handler.external.outlook | true |
注意点―フォルダー移動
エンティティーIDは不変というわけではなく、フォルダー移動で変わることがある。上記のマクロを使うのであれば、自分の環境ではどういう場合にエンティティーIDが変わるのか換わらないのかを知っておく必要がある。
私はメールをすべてExchange Server上に置いてOutlookを使っており、それ以外の環境では使ったことがない。そういう私の環境では、Inboxからその直下にあるフォルダーInbox.Archiveに移動した際にはエンティティーIDが変わらない。しかし、その更に下のフォルダーInbox.Archive.2008-01に移動した際にはエンティティーIDが変わる。Sent Itemsフォルダーからその直下のフォルダーSent Items.2008に移動した際にはエンティティーIDが変わる。