Outlook - Integration Anleitung
In dieser Anleitung beschreibe ich die notwendigen Schritte in Outlook und Obsidian, um Obsidian in einen Outlook-Workflow zu integrieren.
Obsidian
Plugins installieren:
Windows Registry
Folgendes in eine Textdatei schreiben und diese in outlook.reg
umbenennen. Anschließend ausführen.
Windows Registry Editor Version 5.00
[HKEY_USERS\S-1-5-21-2418847262-3847352916-1284767363-2812_Classes\Outlook]
@="URL:Outlook Folders"
"URL Protocol"=""
[HKEY_USERS\S-1-5-21-2418847262-3847352916-1284767363-2812_Classes\Outlook\shell]
[HKEY_USERS\S-1-5-21-2418847262-3847352916-1284767363-2812_Classes\Outlook\shell\open]
[HKEY_USERS\S-1-5-21-2418847262-3847352916-1284767363-2812_Classes\Outlook\shell\open\command]
@="\"C:\\Program Files\\Microsoft Office\\root\\Office16\\OUTLOOK.EXE\" /select \"%1\""
QueryBuilder
Wenn man bessere Filter bauen möchte in Outlook (z.B. um Suchordner ordentlich nutzen zu können), fügt man unten noch folgende Zeile an, welche den QueryBuilder aktiviert.
[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\QueryBuilder]
Outlook
Dev-Tools aktivieren
Einmal nachvollziehen:
https://learn.microsoft.com/en-us/office/vba/outlook/how-to/using-visual-basic-to-customize-outlook-forms/run-in-developer-mode-in-outlook
Im Trust Center von Outlook noch Makros aktivieren: Datei->Optionen->Trust Center->Einstellungen->Makroeinstellungen->Benachrichtigungen für digital signierte Makros. Alle anderen Makros sind deaktiviert.
VBA Makro
Im neuen Reiter im Ribbon Entwicklertools -> Visual Basic auswählen.
Standardmäßig fehlt eine notwendige Funktion bei den Makros. Der muss erst noch importiert werden. Also einmal oben im Reiter: Macro Tools->Extras->Verweise->Durchsuchen-> Wähle
C:\WINDOWS\SYSTEM32\FM20.DLL
-> ok
Nicht signierte Makros sind gesperrt. Also einmal unser eigenes Skript selbstsignieren:
Erst ein eigenes Cert anlegen (womöglich nicht nötig, falls ein Cert schon vorhanden ist): Einmal das Programm C:\Program Files\Microsoft Office\root\Office16\SELFCERT.EXE
ausführen.
Dieses nun unter Extas -> Digitale Signatur auswählen.
Nun folgenden Code als Makro unter dem Namen ThisOutlookSession
(ist standartmäßig angelegt und ausgewählt) kopieren.
Function SetClipBoardText(ByVal Text As Variant) As Boolean
SetClipBoardText = CreateObject("htmlfile").parentWindow.ClipboardData.SetData("Text", Text)
End Function
Function GetLinkFromItem(ByVal objMail As Object) As String
If objMail.Class = olMail Then
GetLinkFromItem = "[MAIL: " & objMail.Subject & " (" & objMail.SenderName & ")](outlook:" & objMail.EntryID & ")"
ElseIf objMail.Class = olAppointment Then
GetLinkFromItem = "[MEETING: " & objMail.Subject & " (" & objMail.Organizer & ")](outlook:" & objMail.EntryID & ")"
ElseIf objMail.Class = olTask Then
GetLinkFromItem = "[TASK: " & objMail.Subject & " (" & objMail.Owner & ")](outlook:" & objMail.EntryID & ")"
ElseIf objMail.Class = olContact Then
GetLinkFromItem = "[CONTACT: " & objMail.Subject & " (" & objMail.FullName & ")](outlook:" & objMail.EntryID & ")"
ElseIf objMail.Class = olJournal Then
GetLinkFromItem = "[JOURNAL: " & objMail.Subject & " (" & objMail.Type & ")](outlook:" & objMail.EntryID & ")"
ElseIf objMail.Class = olNote Then
GetLinkFromItem = "[NOTE: " & objMail.Subject & " (" & " " & ")](outlook:" & objMail.EntryID & ")"
Else
GetLinkFromItem = "[ITEM: " & objMail.Subject & " (" & objMail.MessageClass & ")](outlook:" & objMail.EntryID & ")"
End If
End Function
Function ObsidianTodo(txtObsLink As String)
Dim URL As String
URL = "obsidian://advanced-uri?daily=true&data=%0A" & txtObsLink & "&mode=append"
CreateObject("Shell.Application").ShellExecute (URL)
End Function
'Moves the mail to archive and add todo
Sub MoveAndTodo()
Dim objMail As Object
Dim newMail As Object
Dim txtObsLink As String
'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)
If objMail.Class <> olMail Then
MsgBox ("Only mail are supported.")
Exit Sub
End If
Set myNameSpace = Application.GetNamespace("MAPI")
Set myDestFolder = myNameSpace.Folders(objMail.Parent.Store.DisplayName).Folders("Archiv")
Set newMail = objMail.Move(myDestFolder)
ObsidianTodo ("- [ ] " + GetLinkFromItem(newMail))
End Sub
'Adds a link to the currently selected message to the clipboard
Sub ObsidianLink()
Dim objMail As Object
Dim exito As Boolean
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 GetLinkFromItem(objMail)
doClipboard.PutInClipboard
exito = SetClipBoardText(txtObsLink)
End Sub
Speichern schließen.
Ribbon anpassen
Für einen schnellen Zugriff kann man nun unter Datei->Optionen->Menüband anpassen die neuen Funktionen hinterlegen.
Die beiden dafür nötigen Funktionen sind unter der Kategorie Makros
im linken Auswahlfeld zu finden. Sobald Du eines der Makros auswählst, wirst Du nach einem Namen und Icon gefragt. Fühl Dich da frei, dass so anzupassen, wie du magst.
Für mich selbst habe ich dafür unter Start (E-Mail)
2 Aktionen hinterlegt. Einmal add Todo
und Get link
.
Die Funktion ObsidianLink
kopiert die ID des aktuellen Elementes in den Zwischenspeicher. (Funktioniert auch auf Terminen und Aufgaben).
MoveAndTodo
verschiebt die aktuelle E-Mail (falls keine ausgewählt ist, gibts ne Fehlermeldung) in den Archivordner und erstellt einen Eintrag in die Notiz für den heutigen Tag / DailyNote. Gibts keine, wird eine erstellt. Dafür ist das Plugin von Obsidian zuständig. Dort kannst Du das verhalten auch anpassen.
Hinweis: Das verschieben der Mail in den Archivordner ist notwendig, da die ID sich ändert, sobald eine Mail in einen Ordner verschoben wird. WIllst Du also die Mail in einen anderen Ordner verschieben, dann ist die erste Funktion dein Freund. Oder Du passt das Makro an.
Ich nutze Suchordner, um Mails in Ordner zu sortieren. Daher ist das mit dem Archiv ein super Anlass für Dich, diese auch einmal auszuprobieren. Auf youtube gibt es tolle Tutorials dafür. Mit dem Querybuilder von oben kriegst du bestimmt gute Filter hin und erleichterst Dir die Einordnung von Mails.