Agradeceríamos tu apoyo para difundir nuestros artículos referente a las ciencias informáticas.
Solución:
Puede hacer esto con un poco de código en Outlook y un poco de código en Emacs.
En primer lugar, si utiliza Outlook 2007, deberá habilitar las direcciones URL de Outlook con una adición de registro. Las instrucciones y el archivo de registro se pueden encontrar aquí por cortesía de David Tan.
A continuación, esto macro se puede agregar a Outlook y obtendrá el GUID del mensaje de correo electrónico actual, creará un enlace de modo Org y lo depositará en el portapapeles.
'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
Como señaló koushik en los comentarios, el doClipboard.SetText
La parte se puede expandir para diferenciar entre diferentes tipos de elementos:
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
Casi allí, agregue este poco de lisp a su directorio lisp de emacs para habilitar los enlaces de 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
Y, por último, actualice su archivo .emacs para incluir el código de vínculo de Outlook. Simplemente agregue esto en algún lugar después de configurar el modo org.
(require 'org-outlook)
Ahora puedes llamar al macro (Lo agregué a mi barra de herramientas en Outlook para un acceso rápido) y puede crear rápidamente un enlace al correo electrónico en Emacs.
Un error, el GUID cambia cuando mueve un mensaje entre almacenes de documentos, por lo que si obtiene el GUID del mensaje mientras está en su servidor de Exchange y luego lo mueve a su archivo PST local, el enlace cambiará. Mueva el mensaje antes de obtener el GUID.
Resolví esto escribiendo un vbscript simple (descargar):
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
Copia un enlace del elemento (correo electrónico, entrada de calendario, …) que ha seleccionado actualmente en Outlook a su portapapeles:
Outlook:176CZREX7A79L9TG1T0AJ6HQ8DEBLTFS60HUQYKT2IXBBZ9ZZVA73MNRYVRWRL4RY0VCPQE1IB5GAWY0D8OSMOB4IFDV5OMG9NX2BBKGFA3IWSD62UCNVK0HD9GA80BIDZSBCZL7INCT
Incluso puede usar un servicio de redirección para obtener un enlace HTTP (porque Outlook:
Es probable que los enlaces no se detecten automáticamente si pega en algún lugar, pero los enlaces HTTP sí (descargar), simplemente reemplace la última línea con:
Shell.ShellExecute "cmd", "/c echo https://api.fnkr.net/goto/jsclient/raw/?closeAfter=500#Outlook:" & SelectedItem.entryID & " | clip", "", "runas", 1
Tenga en cuenta que debe hacer Outlook:
los enlaces funcionan primero.
http://www.slipstick.com/problems/outlook-missing-outlook-protocol/ (desplácese hacia abajo hasta “Hazlo por mí”)
Probado con Outlook 2010.
Encontré el subprograma Linker. Voy a probarlo. Es posible que también desee http://www.teamscope.com/otherpro/utilities.asp#linker
Aquí está el regate de marketing..
Linker™ para Windows® crea hipervínculos a elementos y carpetas en Outlook ya archivos y carpetas en Windows Explorer. Es un subprograma de la bandeja del sistema que coloca el hipervínculo en el portapapeles de Windows. Luego, el hipervínculo se puede pegar en cualquier documento de Microsoft Office, página web, mensaje de correo electrónico o cualquier documento que admita hipervínculos.
¡Saludos desde la soleada Sudáfrica!
Reseñas y calificaciones del artículo
Si piensas que te ha resultado de utilidad este post, te agradeceríamos que lo compartas con más programadores y nos ayudes a dar difusión a nuestro contenido.