Cria automaticamente hiperlinks no Outlook com parâmetros variados

0

No Outlook, existe uma maneira de criar automaticamente hiperlinks com parâmetros variados? Especificamente, gostaria de vincular a itens de trabalho no Team Foundation Server, mas uma solução geral seria muito bem também.

Por exemplo, se eu digitar "Item de trabalho 12345", gostaria que ele criasse automaticamente um hiperlink para "mytfs / workitems? id = 12345". Idealmente, o texto do link ainda deve ser "Item de trabalho 12345".

Eu tentei criar uma entrada de AutoCorreção, mas ela não corresponde a curingas * ou % - parece que ela só funcionará com literais.

Eu também tentei usar regras de mensagem de saída, mas não consegui substituir o conteúdo no corpo do e-mail.

Criar um substituto de AutoCorreção para cada item de trabalho não é uma solução viável. Alguma idéia?

    
por johnnyRose 16.08.2017 / 18:23

3 respostas

0

Bem, encontrei uma solução usando o AutoHotKey, que é executado somente no Outlook. Eu ainda prefiro uma solução somente do Outlook, mas isso funciona por enquanto.

Esse código pode ser usado para criar automaticamente links enquanto você digita algo naturalmente. A ressalva óbvia é: você teria que digitar naturalmente o parâmetro URL para que isso parecesse perfeito. No entanto, isso se presta bem aos itens de trabalho do 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

Quando você digita "Item de trabalho", ele remove o texto e espera que você insira um valor que termine com Enter, Espaço ou Tab. Quando você terminar de digitar seu valor e pressionar uma das teclas de encerramento, excluiremos o valor do parâmetro, colocaremos o texto desejado de volta na entrada e adicionaremos o hiperlink.

    
por 17.08.2017 / 15:58
0

Script de cordão de cordinha muito simples para essa finalidade eu apenas agitei:

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

Coloque isso em um arquivo .ahk, clique com o botão direito e clique em "Executar Script". Eu já testei no meu sistema.

O Outlook pode fazer AutoCorreção nisto, mas descobri que ele é irregular na melhor das hipóteses.

Aqui está outra versão desse script que o transforma em um link de texto personalizado:

:*: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

Você terá dois segundos para digitar o código antes de alterar automaticamente o texto e fechar.

Se você ainda deseja uma solução somente do Outlook, vá para Arquivo > Opções > Personalizar fita.  No painel à direita, há uma caixa de seleção para o desenvolvedor. Clique para disponibilizar recursos do desenvolvedor, como macros. Eu posso ajudá-lo com macros até certo ponto.

    
por 16.08.2017 / 19:34
0

Eu encontrei uma resposta somente do Outlook para você. O Outlook suporta uma linguagem de programação chamada VBA (Visual Basic for Applications).

Use Alt + F11 para acessar o Editor do VBA e, em seguida, clique com o botão direito em Projeto1 - > MicrosoftOutlookObjects em "ThisOutlookSession" e clique em "View Code".

Em seguida, cole este código no editor que aparece:

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

Ele será executado quando você enviar qualquer mensagem contendo "Item de trabalho ####" e alterá-lo automaticamente para um link. Você também pode criar uma tecla de atalho para poder fazer isso enquanto digita a mensagem.

    
por 18.08.2017 / 19:37