沢山のメールへの対応を効率化するためのヒント

導入

この記事で述べる手法のはどちらかと言うと、かゆい所に手を届かせるもので、効果は劇的とは言えない。しかし私がメールをさばく際に感じていたフラストレーションは確実に減った。
この手法は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クリップボードハイパーリンクマークアップが入る。そのあとで、ペーストの動作を行なえば、そのハイパーリンクを書き込むことができる。

Firefoxoutlook:の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が変わる。