Автоматически создавать гиперссылки в Outlook с различными параметрами
В Outlook есть ли способ автоматического создания гиперссылок с различными параметрами? В частности, я бы хотел ссылаться на рабочие элементы в Team Foundation Server, но в общем случае было бы неплохо.
Например, если я наберу "Рабочий элемент 12345", я бы хотел, чтобы он автоматически создал гиперссылку на "mytfs/workitems? Id=12345". В идеале текст ссылки должен быть "Рабочий элемент 12345".
Я попытался создать запись автозамены, но она не соответствует шаблонам *
или же %
- Кажется, он будет работать только с литералами.
Я также попытался использовать правила исходящих сообщений, но не смог заменить содержимое в теле письма.
Создание замены автозамены для каждого рабочего элемента не является жизнеспособным решением. Какие-нибудь мысли?
3 ответа
Ну, я нашел решение, используя AutoHotKey, который работает только в Outlook. Я бы все же предпочел решение только для Outlook, но пока это работает.
Этот код можно использовать для автоматического создания ссылок, когда вы что-то печатаете естественным образом. Очевидное предостережение: вы должны были бы естественно ввести параметр URL для того, чтобы это выглядело без проблем. Тем не менее, это хорошо подходит для рабочих элементов TFS.
#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,{Enter}{Space}{Tab} ; Assign input to the variable id; stop accepting input on Enter, Space, or Tab
If (id = "") ; Undo and return
{
SendInput, {Bs}%targetWord% `
Return
}
StringLen,idLength, id ; Assign the length of id to idLength
idLength++ ; Increment idLength
SendInput {BackSpace %idLength%}%targetWord% %id% ; Backspace and enter the full link text
Send,{Shift down}{Left %targetWordLength%}{Left %idLength%}{Shift up} ; Highlight the full text
Send, ^k ; Insert hyperlink
SendInput, %tfsUrl%%id% ; Send text for hyperlink
Send, {Space} ; 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} ; Enter to exit dialog
Return
Когда вы набираете "Рабочий элемент", он удаляет текст и ждет, пока вы введете значение, оканчивающееся на Enter, Пробел или Tab. Когда вы закончите вводить свое значение и нажмете одну из конечных клавиш, мы удаляем значение параметра, помещаем нужный текст обратно во ввод и добавляем гиперссылку.
Я нашел ответ только для Outlook для вас. Outlook поддерживает язык программирования VBA (Visual Basic для приложений).
Используйте Alt+F11 для доступа к редактору VBA, затем щелкните правой кнопкой мыши в Project1 -> MicrosoftOutlookObjects в "ThisOutlookSession" и выберите "View Code".
Затем вставьте этот код в появившийся редактор:
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
Он будет работать, когда вы отправите любое сообщение, содержащее "Рабочий элемент ####", и автоматически смените его на ссылку. Вы также можете сделать это горячей клавишей, чтобы вы могли сделать это во время ввода сообщения.
Действительно простой скрипт для этой цели, который я только что сделал:
:*:Work Item ::
SendInput, http://mytfs/workitems?id=
Return
Поместите это в файл.ahk, щелкните по нему правой кнопкой мыши и выберите "Run Script". Я уже проверил это на моей системе.
Outlook может сделать автозамену на этом, но я нашел это в лучшем случае пятнистым.
Вот еще одна версия этого скрипта, которая превращает его в пользовательскую текстовую ссылку:
:*:Work Item ::
SendInput, http://mytfs/workitems?id=
SendInput, ^+{Left 4}
SendInput, ^k
SendInput, {End}
Sleep, 2000
SendInput, !t
SendInput, +^{Left}
SendInput, Work Item{Space}
SendInput, {Enter}
Return
У вас будет две секунды для ввода идентификатора, прежде чем он автоматически изменит текст и закроется.
Если вы все еще хотите использовать решение только для Outlook, выберите "Файл"> "Параметры"> "Настройка ленты". В правой панели есть флажок для разработчика. Нажмите на нее, чтобы сделать доступными такие функции разработчика, как макросы. Я мог бы помочь вам с макросами в определенной степени.