Wątkowe wiadomości e-mail z powiadomieniem Jira w programie Outlook 2010

9

Gdy otrzymuję powiadomienia e-mail z powiadomieniem Jira 4.2 w programie Outlook 2010, nie są one dzielone na wątki. Oczywiście domyślnie Jira wysyła e-maile z takimi tematami: [JIRA] Created: (LTST-4) improve documentation, [JIRA] Assigned: (LTST-4) improve documentation. Czytałem online, że Outlook 2010 używa wyłącznie pola Temat do wątkowania, więc posiadanie tematów jak powyżej zmusi te wiadomości e-mail NIE do wątkowania, co faktycznie ma miejsce. Pamiętaj, że Gmail, na przykład, również nie wątkuje na te same e-maile (ale tak naprawdę aplikacja pocztowa Apple iPhone 4!).

Więc manipulowane mój setup Jira, aby usunąć „działania wykonywane” czasownik od tematu i teraz podmiotów e-mail wszystko wyglądać następująco: [JIRA] (LTST-4) improve documentation. Gmail chętnie je wątkuje. Ale Outlook 2010 nadal nie!

Czy mogę coś zrobić w zakresie konfiguracji Jira lub konfiguracji Outlooka, aby zmusić program Outlook 2010 do wysyłania wiadomości e-mail z powiadomieniami Jira w wątkach?

Dzięki, Kirill

Kirillka
źródło

Odpowiedzi:

5

Poniższe makro VBA pozostawia tylko 1 wiadomość na problem Jira w Twojej skrzynce odbiorczej. Usuwa również wiadomości o rozwiązanych / zamkniętych problemach, ponieważ nie muszę na nie patrzeć

' Tools>References: Microsoft VBScript Regular Expressions 5.5, Microsoft Scripting Runtime

Sub RemoveDuplicateJiraKeys()
    Dim i As Object
    Dim re As New RegExp
    Dim m As MatchCollection
    Dim d As New Dictionary
    Dim act As String ' Commented, Resolved, Updated...
    Dim key As String ' e.g. RS-123

    re.Pattern = "\[JIRA\] (.*?): \((.*?)\)"
    For Each i In Session.GetDefaultFolder(olFolderInbox).Items
      ' luckily the items come in chronological order
      Set m = re.Execute(i.Subject)
      If m.Count >= 1 Then
        act = m(0).SubMatches(0)
        key = m(0).SubMatches(1)
        If d.Exists(key) Then d(key).Delete: d.Remove (key) ' same Jira key but older
        If act = "Resolved" Or act = "Closed" Then i.Delete Else d.Add key, i
      End If
    Next i
End Sub
Vladimir Alexiev
źródło
1

Program Outlook 2010 organizuje rozmowy (wątki) tylko według tematu. Usunięcie „akcji” z tematu wiadomości e-mail w JIRA powinno przechowywać je razem w skrzynce odbiorczej programu Outlook. Wygląda na to, że konieczne może być sprawdzenie ustawień programu Outlook. Więcej informacji dostępnych tutaj .

Justin
źródło
1
Tak właśnie myślałem. Niestety tak się nie dzieje. Wiadomości o tym samym dokładnym temacie NIE są łączone w wątki. Widziałem też link, o którym wspomniałeś, nic istotnego.
kirillka
0

Użyłem kombinacji drugiego postu z odpowiedzią i tego artykułu, aby napisać własne makro, które używa biblioteki Redemption do scalania rozmów.

Spowoduje to skanowanie bieżącego folderu, wybranie e-maili Jira, wyodrębnienie klucza problemu z tematu. Gdyby nie widział tego klucza przed, zapisuje indeksu konwersacji w kolekcji oparte na kluczu emisyjnej, a jeśli to nie widziałem go wcześniej, to aktualizuje maila z zapisanego indeksu konwersacji.

Dim ConversationIndexes As New Collection

Sub GroupJira()
    Dim MapiNamespace As Object
    Dim RdoSession As Object

    Dim Item As Object
    Dim RdoItem As Object

    Dim ConversationKey As String
    Dim ConversationIndex As String

    ' Get all the required handles
    Set MapiNamespace = Outlook.GetNamespace("MAPI")
    MapiNamespace.Logon
    Set RdoSession = CreateObject("Redemption.RDOSession")
    RdoSession.MAPIOBJECT = MapiNamespace.MAPIOBJECT

    'Setup some subject patterns to extract the issue key
    Dim Matches As MatchCollection
    Dim UpdateSubjectPattern As New RegExp
    UpdateSubjectPattern.Pattern = "\[JIRA\] \(([A-Z]+-[0-9]+)\) .*"
    Dim MentionedSubjectPattern As New RegExp
    MentionedSubjectPattern.Pattern = "\[JIRA\] .* mentioned you on ([A-Z]+-[0-9]+) \(JIRA\)"

    For Each Item In Outlook.ActiveExplorer.CurrentFolder.Items
        If TypeOf Item Is MailItem Then
            If Left(Item.Subject, 7) = "[JIRA] " Then
                ' Get a key for this conversation, opic for now
                ConversationKey = Item.ConversationTopic
            Set Matches = UpdateSubjectPattern.Execute(Item.Subject)
            If Matches.Count >= 1 Then ConversationKey = Matches(0).SubMatches(0)
            Set Matches = MentionedSubjectPattern.Execute(Item.Subject)
            If Matches.Count >= 1 Then ConversationKey = Matches(0).SubMatches(0)

                ' Get any saved indexes
                ConversationIndex = ""
                On Error Resume Next
                ConversationIndex = ConversationIndexes.Item(ConversationKey)
                On Error GoTo 0

                If ConversationIndex = "" Then
                    ' Save this index if not seen yet
                    ConversationIndexes.Add Item.ConversationIndex, ConversationKey
                ElseIf Item.ConversationIndex <> ConversationIndex Then
                    ' Set the item's index if it has
                    Set RdoItem = RdoSession.GetMessageFromID(Item.EntryID, Item.Parent.StoreID)
                    RdoItem.ConversationIndex = ConversationIndex
                    RdoItem.Save
                End If
            End If
        End If
    Next Item
End Sub

Wymaga to następujących bibliotek:

  • Biblioteka wykorzystania dla pełnego dostępu RDO, wymagana do ustawienia indeksu konwersacji (nie wymaga podniesienia, aby go zarejestrować)
  • Odwołanie do Microsoft VBScript Regular Expressions 5.5biblioteki w celu wyodrębnienia kluczy wydania z tematów wiadomości.

Aha, musisz też zmienić ustawienia bezpieczeństwa makr, aby je uruchomić.

Deanna
źródło