Outlookで特定の電子メールメッセージへのリンクを作成できますか?


63

仕事でメールクライアントとしてOutlookを使用していますが、仕事や仕事の管理にOutlookを使用したくありません。(代わりに、プレーンテキストファイルとEmacs org-modeを使用します。)多くのToDoアイテムは受信トレイでメールとして開始されるため、これらのメールを参照する必要があることがよくあります。

クリックするとOutlookで特定のメールを開くリンク(URL)を作成する賢い方法はありますか?


十分な評判のある人はこの質問に再度タグ付けしてください。(TAG =>)「org-mode」について話している。
ケクス線量

回答:


32

これを行うには、Outlookの少しのコードとEmacsの少しのコードを使用します。

まず、Outlook 2007を使用している場合は、レジストリを追加してOutlook URLを有効にする必要があります。手順とレジストリファイルは、David Tanの好意によりここにあります。

次に、このマクロをOutlookに追加して、現在の電子メールメッセージのGUIDを取得し、Org-Modeリンクを作成してクリップボードに保存します。

'Adds a link to the currently selected message to the clipboard
Sub AddLinkToMessageInClipboard()

   Dim objMail As Outlook.MailItem
   Dim doClipboard As New DataObject

   'One and ONLY one message muse be selected
   If Application.ActiveExplorer.Selection.Count <> 1 Then
       MsgBox ("Select one and ONLY one message.")
       Exit Sub
   End If

   Set objMail = Application.ActiveExplorer.Selection.Item(1)
   doClipboard.SetText "[[outlook:" + objMail.EntryID + "][MESSAGE: " + objMail.Subject + " (" + objMail.SenderName + ")]]"
   doClipboard.PutInClipboard

End Sub

コウシクはコメントで述べ、doClipboard.SetText一部は異なるアイテムタイプを区別するために拡張することができます。

If objMail.Class = olMail Then
    doClipboard.SetText "[[outlook:" + objMail.EntryID + "][MESSAGE: " + objMail.Subject + " (" + objMail.SenderName + ")]]"
ElseIf objMail.Class = olAppointment Then
    doClipboard.SetText "[[outlook:" + objMail.EntryID + "][MEETING: " + objMail.Subject + " (" + objMail.Organizer + ")]]"
ElseIf objMail.Class = olTask Then
    doClipboard.SetText "[[outlook:" + objMail.EntryID + "][TASK: " + objMail.Subject + " (" + objMail.Owner + ")]]"
ElseIf objMail.Class = olContact Then
    doClipboard.SetText "[[outlook:" + objMail.EntryID + "][CONTACT: " + objMail.Subject + " (" + objMail.FullName + ")]]"
ElseIf objMail.Class = olJournal Then
    doClipboard.SetText "[[outlook:" + objMail.EntryID + "][JOURNAL: " + objMail.Subject + " (" + objMail.Type + ")]]"
ElseIf objMail.Class = olNote Then
    doClipboard.SetText "[[outlook:" + objMail.EntryID + "][NOTE: " + objMail.Subject + " (" + " " + ")]]"
Else
    doClipboard.SetText "[[outlook:" + objMail.EntryID + "][ITEM: " + objMail.Subject + " (" + objMail.MessageClass + ")]]"    
End If

ほぼそこに、この少しのlispをemacs lispディレクトリに追加して、Outlookリンクを有効にします。

;;; org-outlook.el - Support for links to Outlook items in Org

(require 'org)

(org-add-link-type "outlook" 'org-outlook-open)

(defun org-outlook-open (id)
   "Open the Outlook item identified by ID.  ID should be an Outlook GUID."
   (w32-shell-execute "open" (concat "outlook:" id)))

(provide 'org-outlook)

;;; org-outlook.el ends here

最後に、.emacsファイルを更新して、Outlookリンクコードを含めます。org-modeがセットアップされた後、これをどこかに追加してください。

(require 'org-outlook)

これでマクロを呼び出して(すばやくアクセスできるようにOutlookのツールバーに追加しました)、Emacsで電子メールへのリンクをすばやく作成できます。

1つの落とし穴、ドキュメントストア間でメッセージを移動するとGUIDが変更されるため、Exchangeサーバー上にあるメッセージにGUIDを取得し、ローカルPSTファイルに移動すると、リンクが変更されます。GUIDを取得する前にメッセージを移動します。


4
これは素晴らしい、ありがとう!1つの簡略化:Outlook URLを有効にするためにレジストリを混乱させず、代わりにこれにw32-shell-execute呼び出しを変更しました:(w32-shell-execute "open" "C:/ Programme / Microsoft Office / Office12 / OUTLOOK.EXE "(concat" / select "" outlook: "id)
クリスチャンバーグ

1
この答えをありがとう。未定義のDataObjectでのコンパイルエラーを防ぐために、空のフォームを作成する必要があることがわかりました。
ローラン

@ChristianBerg:Outlook 2003を使用しているので、レジストリに煩わされることなくハイパーリンクを設定できますが、簡略化が機能せず、OutlookはURLを見つけることができませんでした。そして、Emacsのリンクをクリックするたびに、新しいoutlook-processが開始されました。だから私は... user259によって優れたソリューションに貼り
のKEK線量

1
関連するアイテムを扱うためのいくつかのアポイントメントへのリンクを記録しなければならなかったので、私はもう少し「このかゆみをひっかきました」(そのため、情報や添付ファイルを参照したり、更新がある場合はすべて返信したりできます)。これで、メール、カレンダーアイテム、連絡先、メモ、ジャーナルエントリをエクスポートできるようになり、少なくとも他のエントリで呼び出されても失敗しません。変更されたコードはpastebin.com/gNWLVNRkにあります(VBAで作成する方法がわかりませんが、役立つ場合は差分を提供できます)。私の目的でこれを機能させるために、他の変更(emacs側またはレジストリ)を行う必要はありませんでした。HTH。
koushik

1
DataObject型のエラーを解決するために、次の方法が役立ちました。マクロエディターで、[ツール]、[参照]の順に移動します。[参照]をクリックし、ファイルC:\Windows\System32\fm20.dllを選択して[ OK]を押します。
ヒューゴアイデラー

6

簡単なvbscriptを書くことでこれを解決しました(ダウンロード):

Set Outlook = CreateObject("Outlook.Application")
Set SelectedItem = Outlook.ActiveExplorer.Selection.Item(1)
Set Shell = CreateObject("Shell.Application")
Shell.ShellExecute "cmd", "/c echo Outlook:" & SelectedItem.entryID & " | clip", "", "runas", 1

Outlookで現在選択している要素(電子メール、カレンダーエントリなど)のリンクをクリップボードにコピーします。

Outlook:176CZREX7A79L9TG1T0AJ6HQ8DEBLTFS60HUQYKT2IXBBZ9ZZVA73MNRYVRWRL4RY0VCPQE1IB5GAWY0D8OSMOB4IFDV5OMG9NX2BBKGFA3IWSD62UCNVK0HD9GA80BIDZSBCZL7INCT

リダイレクションサービスを使用して、HTTPリンクを取得することもできます(Outlook:貼り付けるとリンクはおそらく自動的に検出されませんが、HTTPリンクは検出されるため)(ダウンロード)、最後の行を次のように置き換えます

Shell.ShellExecute "cmd", "/c echo https://api.fnkr.net/goto/jsclient/raw/?closeAfter=500#Outlook:" & SelectedItem.entryID & " | clip", "", "runas", 1

Outlook:最初にリンクを機能させる必要があることに注意してください。
http://www.slipstick.com/problems/outlook-missing-outlook-protocol/(「Do It For Me」までスクロールします

Outlook 2010でテスト済み。


3

リンカーapplet。に出くわしました。試してみようとします。http: //www.teamscope.com/otherpro/utilities.asp#linker

これがマーケティングの点滴です。

Linker™forWindows®は、Outlookのアイテムとフォルダー、およびWindowsエクスプローラーのファイルとフォルダーへのハイパーリンクを作成します。これは、Windowsクリップボードにハイパーリンクを配置するシステムトレイアプレットです。ハイパーリンクは、Microsoft Officeドキュメント、Webページ、電子メールメッセージ、またはハイパーリンクをサポートするドキュメントに貼り付けることができます。

日当たりの良い南アフリカからのご挨拶!


リンカーは時々機能しますが、そうでない場合もあります。Win 7 + Outlook 2010
Andy

Office Pro Plus 2016 + Win 10 Proを使用すると、動作しませんでした。コピーされたリンクにアクセスすると破損します。したがって、\\ <電子メールアドレス> \ Drafts \〜testをクリックすると、未知のアプリがwin 10でピックアップされ、破損します。
ナスリナジブ

1

特定のメールを参照するかどうかはわかりませんが、システムによっては、todoアイテムと同じ場所にメールをコピーできる場合があります。メールをフォルダまたはデスクトップにドラッグアンドドロップするだけで、通常のファイルとして扱うことができるメールのコピーが作成されます。

.docまたは.txtよりも「高度な」ファイルを使用する場合は、このOutlookメッセージファイルにリンクできます。


1
その解決策を紹介します。新しいワークフローは次のとおりです。メールを一時フォルダーにドラッグします。組織モードでtodoアイテムを作成します。メッセージファイルを添付ファイルとしてアイテムに追加します:Cc Ca m(メッセージファイルは添付ファイルフォルダに移動さ​​れます)。後でCc Ca oを押すと、todoアイテムからメッセージを開くことができます。
クリスチャンバーグ


0

ある種のカスタムコードがないわけではありません。Outlook URIを使用すると、Outlook内の格納フォルダーに移動できますが、それだけです。より細かくするには、リンク戦略に沿った賢いファイリング戦略を考え出す必要があります。


他の答えは、それが可能であることを示しているため、下票です。
SaaruLindestøkke

0

おそらくあなたの要件は私のものとは異なります。

Outook 2013> [メッセージ]タブ(通常のビュー)> [アクション]ボタン>ブラウザーで表示

次に、ブラウザからそのリンクを取得します。

その助けを願っています


2
これは有望なように見えましたがOutlook 2013、私にとっては、これは URLに.mhtファイルを作成するAppData\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook` and opens that in IE using a 'mhtml:file://..ので、行きません。
悲惨な変数

0

Outlookの電子メールをOneNoteにコピーし(黄色い文字のアイコンとして表示されます)、右クリックして[段落へのリンク]を選択し、リンクを使用できる別のドキュメントにリンクを貼り付けます。

しかし、とにかく、Microsoftはこの電子メールへのリンクのすべてを標準機能にする必要がありました。これは、Lotus Notesの非常に便利な機能でした。


これは便利な機能です。しかし、セキュリティモデルとは何ですか?悪意のある人に、偶然に開く可能性のあるリンクをメールで送信してほしいですか?外のGUID、必ず、見えない-彼らは漏れていない限り...
クレイジーGLEW

0

上記の受け入れられた答えにコメントを入れるのに十分な評判クレジットがありませんが、(usercs)StackExchangeに投稿された@ user25995によって提供される優れた答えへの相互参照を入れたいと思いました

私はそこに掲載の質問に受信したコメントに基づいて、私は(非推奨)の使用を変更org-add-link-typeorg-link-set-parameters、付属のexport:HTMLエクスポートバックエンドは私に適切にフォーマットされたように、機能を<a href="outlook:...">リンクタイプを。


実際のコメントを送信できないため、コメントを回答として送信しないでください。
ラムハウンド

2
@Ramhound-リンクを提供し、著者に謝意を表することによってさえ、受け入れられた答えを指すのに苦労しました。次に、現在廃止されている関数の使用を回避する小さなリビジョンを提供しました。ここでプロトコルに違反するつもりはありませんでした-受け入れられた答えにコメントするのに十分なブラウニーポイントがない場合、これを伝える正しい方法はありますか?
kwoodham

-1

Wunderlistを使用してタスクを管理しますが、OutlookのWunderlistアドインを使用すると、電子メールメッセージから直接新しいタスクを作成でき、Wunderlistは自動的にタスクノートに元のメッセージへのリンクを作成します。留意すべきいくつかの事項:

  1. 後でメッセージを別のフォルダーに移動するとURLが壊れるため、メッセージを常に最初にフォルダーに移動します(前回チェックしました)。
  2. Outlookデスクトップ用のアドインはありますが、リンクが含まれていないようです。そのため、タスクを作成するときにWeb上のOutlookを使用します。
  3. 企業のメールアカウントを使用して、Office 365のWeb上のOutlookでこれを試しました。消費者向けOffice 365アカウントでも同様に機能すると思いますが、試したことはありません。
  4. Wunderlistを使用しない場合でも、サインアップして、必要なときにURLを生成するために使用できます。

また、開示のためだけにMicrosoftで働いていますが、OutlookチームやWunderlistチームとは関係ありません。


1
質問を注意深く読んでください。あなたの答えは元の質問には答えませ。OPはを使用していemacsます。
DavidPostill

@DavidPostill敬具、私はやったと思った。そのため、テキストファイルなど、どこにでも保存できるメッセージのURLを取得する方法として#4を含めました。
AJSkew
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.