В Outlook есть ли способ автоматически создавать гиперссылки с различными параметрами? В частности, я бы хотел ссылаться на рабочие элементы в Team Foundation Server, но общее решение тоже подойдет.

Например, если я введу "Рабочий элемент 12345", я бы хотел, чтобы он автоматически создал гиперссылку на «mytfs /workitems?ID = 12345" . В идеале текст ссылки должен быть "Рабочий элемент 12345".

Я попытался создать запись автозамены, но она не совпадает с подстановочными знаками * или % - похоже, она будет работать только с литералами.

Я также пытался использовать правила исходящих сообщений, но не смог заменить содержимое в теле письма.

Создание замены автозамены для каждого рабочего элемента не является жизнеспособным решением. Какие-нибудь мысли?

3 ответа3

0

Я нашел ответ только для 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

Он будет работать, когда вы отправите любое сообщение, содержащее «Рабочий элемент ####», и автоматически смените его на ссылку. Вы также можете сделать это горячей клавишей, чтобы вы могли сделать это во время ввода сообщения.

0

Действительно простой скрипт для этой цели, который я только что сделал:

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

Поместите это в файл .ahk, щелкните по нему правой кнопкой мыши и выберите "Запустить скрипт". Я уже проверил это на моей системе.

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, выберите «Файл»> «Параметры»> «Настройка ленты». В правой панели есть флажок для разработчика. Нажмите на нее, чтобы сделать доступными такие функции разработчика, как макросы. Я мог бы помочь вам с макросами в определенной степени.

0

Ну, я нашел решение, используя 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. Когда вы закончите вводить свое значение и нажмете одну из конечных клавиш, мы удаляем значение параметра, помещаем нужный текст обратно во ввод и добавляем гиперссылку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .