Tôi đã sử dụng kết hợp các bài trả lời khác và bài viết này để viết macro của riêng tôi sử dụng thư viện Redemption để hợp nhất các cuộc hội thoại.
Thao tác này sẽ quét thư mục hiện tại, chọn ra bất kỳ email jira nào, trích xuất khóa vấn đề từ chủ đề. Nếu trước đó không thấy khóa đó, nó sẽ lưu chỉ mục cuộc hội thoại trong bộ sưu tập dựa trên khóa sự cố và nếu đã thấy khóa đó trước đó, nó sẽ cập nhật email với chỉ mục hội thoại đã lưu.
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
Điều này đòi hỏi các thư viện sau:
- Thư viện đổi quà để truy cập RDO đầy đủ, được yêu cầu đặt chỉ mục cuộc hội thoại (điều này không yêu cầu độ cao để đăng ký)
- Một tham chiếu đến
Microsoft VBScript Regular Expressions 5.5
thư viện để trích xuất các khóa vấn đề từ các chủ đề thư.
Ồ, và bạn cũng cần phải điều chỉnh các cài đặt bảo mật macro của mình để chạy nó.