Ich habe eine Kombination des anderen Antwortpostens und dieses Artikels verwendet, um ein eigenes Makro zu schreiben, das die Redemption-Bibliothek zum Zusammenführen der Konversationen verwendet.
Dadurch wird der aktuelle Ordner durchsucht, Jira-E-Mails werden ausgewählt und der Problemschlüssel aus dem Betreff extrahiert. Wenn es vor, dass die Schlüssel nicht gesehen hat, speichert er das Gespräch Index in einer Sammlung zu diesem Thema Schlüssel basiert, und wenn es hat es zuvor gesehen, aktualisiert er die E - Mail mit dem gespeicherten Gespräch Index.
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
Dies erfordert die folgenden Bibliotheken:
- Einlösungsbibliothek für vollständigen RDO-Zugriff, erforderlich zum Festlegen des Konversationsindex (für die Registrierung ist keine Erhöhung erforderlich)
- Ein Verweis auf die
Microsoft VBScript Regular Expressions 5.5
Bibliothek, um Ausgabeschlüssel aus den E-Mail-Betreffs zu extrahieren.
Oh, und Sie müssen auch Ihre Makrosicherheitseinstellungen ändern, um sie auszuführen.