Erstellen Sie in Outlook automatisch Hyperlinks mit unterschiedlichen Parametern

357
johnnyRose

Gibt es in Outlook eine Möglichkeit, automatisch Hyperlinks mit unterschiedlichen Parametern zu erstellen? Im Besonderen möchte ich eine Verknüpfung zu Arbeitselementen in Team Foundation Server herstellen, aber auch eine generelle Lösung wäre in Ordnung.

Wenn ich beispielsweise "Work Item 12345" eingebe, möchte ich, dass automatisch ein Hyperlink zu "mytfs / workitems? Id = 12345" erstellt wird. Im Idealfall sollte der Linktext weiterhin "Arbeitselement 12345" sein.

Ich habe versucht, einen AutoCorrect-Eintrag zu erstellen, aber er stimmt nicht mit Platzhaltern überein *oder %- es scheint, dass er nur mit Literalen funktioniert.

Ich habe auch versucht, Regeln für ausgehende Nachrichten zu verwenden, aber ich konnte den Inhalt im E-Mail-Text nicht ersetzen.

Das Erstellen eines AutoCorrect-Ersatzes für jedes Arbeitselement ist keine praktikable Lösung. Irgendwelche Gedanken?

0
Möchten Sie Autohotkey verwenden? Sie können sehr einfach automatische Hotstrings erstellen. var firstName vor 6 Jahren 0
@ varfirstName: Ich würde eine reinere Lösung vorziehen, aber wenn die Arbeit erledigt ist, ist dies sicherlich eine Überlegung wert. johnnyRose vor 6 Jahren 0

3 Antworten auf die Frage

0
var firstName

Ein wirklich einfaches Hotstring-Skript für diesen Zweck, das ich gerade ausprobiert habe:

:*:Work Item :: SendInput, http://mytfs/workitems?id= Return 

Fügen Sie dies in eine .ahk-Datei ein, klicken Sie mit der rechten Maustaste darauf und klicken Sie auf "Skript ausführen". Ich habe es bereits auf meinem System getestet.

Outlook kann AutoCorrect für dieses Problem ausführen, aber ich habe festgestellt, dass es bestenfalls fleckig ist.

Hier ist eine weitere Version dieses Skripts, die es in einen benutzerdefinierten Textlink umwandelt:

:*:Work Item :: SendInput, http://mytfs/workitems?id= SendInput, ^+ SendInput, ^k SendInput,  Sleep, 2000 SendInput, !t SendInput, +^ SendInput, Work Item SendInput,  Return 

Sie haben zwei Sekunden Zeit, um die ID einzugeben, bevor der Text automatisch geändert und geschlossen wird.


Wenn Sie immer noch eine reine Outlook-Lösung wünschen, wählen Sie Datei> Optionen> Multifunktionsleiste anpassen. Im rechten Bereich befindet sich ein Kontrollkästchen für Entwickler. Klicken Sie darauf, um Entwicklerfunktionen wie Makros verfügbar zu machen. Ich kann Ihnen vielleicht bis zu einem gewissen Grad mit Makros helfen.

"Outlook kann AutoCorrect für dieses Problem ausführen, aber ich habe festgestellt, dass es bestenfalls fleckig ist." Können Sie das näher erläutern und wie Sie es zum Laufen gebracht haben, auch wenn es fleckig ist? johnnyRose vor 6 Jahren 0
Ok, anstatt "Work Item" als Schlüsselwort für die Aktivierung zu verwenden, habe ich "Work Item" verwendet. Dann füge ich "http: // mytfs / workitems? Id =" in das Feld "Ersetzen durch" ein. Nachdem das Makro einmal verwendet wurde, funktionierte es. Als ich es jedoch ein zweites Mal in derselben E-Mail verwendete (nachdem ich den vorherigen Link gelöscht hatte), tat es nichts. Er hat den Text nicht ersetzt, er hat ihn nicht gelöscht, er saß einfach da und tat nichts. var firstName vor 6 Jahren 0
Es hat nichts unternommen, weil Sie den korrigierten Text gelöscht und die AutoKorrektur vorübergehend überschrieben haben. Das würde gut funktionieren, aber es wäre wirklich toll, wenn der Linktext "Work Item 12345" bleibt. Ich habe meine Frage bearbeitet, um das zu reflektieren. Ich entschuldige mich dafür, dass ich anfangs unklar war. Ich hoffe immer noch auf eine reine Outlook-Lösung. johnnyRose vor 6 Jahren 0
Oh ok ich verstehe. var firstName vor 6 Jahren 0
Ich habe meine Antwort bearbeitet, @johnnyRose var firstName vor 6 Jahren 0
Das Zwei-Sekunden-Limit ist restriktiv und da Sie verwenden, wird auch der Text in der Zeile davor gelöscht. Ich habe meine eigene Lösung hinzugefügt, die für mich wirklich gut funktioniert. johnnyRose vor 6 Jahren 0
Sie können ^ eine bestimmte Anzahl von Zeiten verwenden. var firstName vor 6 Jahren 0
Das ist ein Teil von [meiner Antwort] (https://superuser.com/a/1241846/728806). johnnyRose vor 6 Jahren 0
Ihre Implementierung ist eher ineffizient. Verwenden Sie vorhandene Verknüpfungen (wie ^ + Left) und verstehen Sie, dass Sie in vielen Fällen keine Variablen benötigen. Sie müssen die Länge der ID-Zeichenfolge nicht kennen, da Sie am Ende der ID-Zeichenfolge mit ^ + dieses Segment auswählen können und dann + , um nur die numerische ID auszuwählen . var firstName vor 6 Jahren 0
Wie ist meine Implementierung ineffizient? Es soll relativ allgemein sein: es sollte unabhängig von Leerzeichen jeder Längen-ID oder jedem Trigger entsprechen. Wenn ich es so implementieren würde, wie Sie es vorgeschlagen haben, müsste ich mein Skript ändern, wenn ich mein Triggerwort ändern würde. Meine Lösung macht genau das, was ich will, und wenn ich den Auslöser ändern möchte (in Bug, PBI, My Work Item usw.), muss ich den Rest des Skripts nicht ändern. Kommt mir ziemlich gut vor. johnnyRose vor 6 Jahren 0
Ich könnte es ändern, um die Leerzeichen im Triggerwort zu zählen und es zu verwenden. Und da ich als Endetaste verwende, haben Sie Recht, dass ich mir keine Sorgen um die im ID-Bereich machen muss. Ich könnte es ändern, um Leerzeichen zu berücksichtigen, wenn mir langweilig wird, aber im Moment mache ich mir nicht allzu viele Sorgen. Wenn der ID-Anteil tatsächlich ziemlich lang ist, würde der Benutzer ohnehin mehr als 2 Sekunden brauchen, um den Wert einzugeben. :) johnnyRose vor 6 Jahren 0
(Aber Sie haben recht, dass die Verwendung von `^ + ` eine gute Idee ist - ich würde das gerne in eine noch allgemeinere Lösung einbeziehen, wenn ich die Zeit finde) johnnyRose vor 6 Jahren 0
@johnnyRose Sie könnten gespannt sein, dass ich eine reine Outlook-Lösung gefunden habe! Diskutieren Sie im Chat, wenn Sie möchten. var firstName vor 6 Jahren 0
Lassen Sie uns [diese Diskussion im Chat fortsetzen] (http://chat.stackexchange.com/rooms/64067/discussion-between-var-firstname-and-johnnyrose). var firstName vor 6 Jahren 0
0
johnnyRose

Nun, ich habe mit AutoHotKey eine Lösung gefunden, die nur in Outlook läuft. Ich würde immer noch eine reine Outlook-Lösung vorziehen, aber das funktioniert jetzt.

Dieser Code kann verwendet werden, um automatisch Links zu erstellen, während Sie natürlich etwas eingeben. Der offensichtliche Nachteil ist: Sie müssen den URL-Parameter auf natürliche Weise eingeben, damit er sich nahtlos anfühlt. Dies eignet sich jedoch gut für TFS-Arbeitselemente.

#SingleInstance force ; Force kill any currently running instances #IfWinActive,,Message ; Only do this in Outlook  :?*:Work Item :: targetWord = Work Item ; The hotstring to match StringLen,targetWordLength, targetWord ; The length of the hotstring to match tfsUrl = mytfs/workitems?id= ; Your URL Input, id, v, ; Assign input to the variable id; stop accepting input on Enter, Space, or Tab If (id = "") ; Undo and return { SendInput, %targetWord% ` Return }  StringLen,idLength, id ; Assign the length of id to idLength idLength++ ; Increment idLength  SendInput %targetWord% %id% ; Backspace and enter the full link text Send, ; Highlight the full text  Send, ^k ; Insert hyperlink SendInput, %tfsUrl%%id% ; Send text for hyperlink  Send, ; If you don't send a space, Outlook might suggest a longer URL which starts with the URL you provided. A space at the end prevents this. Send, ; Enter to exit dialog  Return 

Wenn Sie "Arbeitselement" eingeben, wird der Text entfernt und Sie müssen einen Wert eingeben, der mit Enter, Leerzeichen oder Tabulatortaste endet. Wenn Sie mit der Eingabe Ihres Werts fertig sind und eine der Endetasten drücken, löschen wir den Parameterwert, fügen den gewünschten Text wieder in die Eingabe ein und fügen den Hyperlink hinzu.

0
var firstName

Ich habe nur eine Outlook-Antwort für Sie gefunden. Outlook unterstützt eine Programmiersprache namens VBA (Visual Basic for Applications).

Verwenden Sie Alt+, F11um auf den VBA-Editor zuzugreifen, klicken Sie mit der rechten Maustaste unter Project1 -> MicrosoftOutlookObjects auf "ThisOutlookSession" und klicken Sie auf "Code anzeigen".

Fügen Sie dann diesen Code in den angezeigten Editor ein:

Sub GetValueUsingRegEx() ' Set reference to VB Script library ' Microsoft VBScript Regular Expressions 5.5  Dim olMail As Outlook.MailItem Dim Reg1 As RegExp Dim M1 As MatchCollection Dim M As Match  Set olMail = Application.ActiveInspector.CurrentItem ' Debug.Print olMail.Body  Set Reg1 = New RegExp  With Reg1 .Pattern = "Work Item\s*\d*\s*" .Global = True End With If Reg1.Test(olMail.Body) Then  Set M1 = Reg1.Execute(olMail.Body)  Debug.Print Split(M1.Item(0), " ")(2) olMail.HTMLBody = Replace(olMail.HTMLBody, M1.Item(0), "<a href=" & Chr(34) & "http://mytfs/workitems?id=" & Split(M1.Item(0), " ")(2) & Chr(34) & ">Work Item " & Split(M1.Item(0), " ")(2) & "</a>") Debug.Print olMail.HTMLBody End If End Sub 

Es wird ausgeführt, wenn Sie eine Nachricht senden, die "Work Item ####" enthält, und diese automatisch in einen Link ändern. Sie können es auch zu einem Hotkey machen, damit Sie es tun können, während Sie die Nachricht eingeben.