Advertisement
squid808

Get-MessageUnreadHistoryByMessageId

Feb 2nd, 2018
325
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function Get-MessageUnreadHistoryByMessageId ($MessageId, $TargetUserEmail=$null) {
  2.  
  3.     $Query = "rfc822msgid:$MessageId"
  4.  
  5.     if ($null -ne $TargetUserEmail) {
  6.         $ID = Get-GGmailMessage -Query $Query -UserId me -All -TargetUserEmail $TargetUserEmail
  7.         $Message = Get-GGmailMessage -UserId me -Id $Id.id -TargetUserEmail $TargetUserEmail
  8.     } else {
  9.         $ID = Get-GGmailMessage -Query $Query -UserId me -All
  10.         $Message = Get-GGmailMessage -UserId me -Id $Id.id
  11.     }
  12.     $foundMessageStart = $false
  13.     $Increment = 1000
  14.     do {
  15.         $StartId = $Message.HistoryId - $Increment
  16.  
  17.         if ($null -ne $TargetUserEmail) {
  18.             $History = Get-GGmailHistory -UserId me -StartHistoryId $StartId -TargetUserEmail $TargetUserEmail
  19.         } else {
  20.             $History = Get-GGmailHistory -UserId me -StartHistoryId $StartId
  21.         }
  22.         $MessageHistory = $History | where {$_.Messages.Id -contains $id.id}
  23.  
  24.         if (($MessageHistory | where {$_.MessagesAdded -ne $null}) -eq $null) {
  25.             $Increment = $Increment + ($Increment * 2)
  26.             continue
  27.         } else {
  28.             $foundMessageStart = $true
  29.         }
  30.  
  31.     } while ($foundMessageStart -eq $false)
  32.  
  33.     $Results = New-Object System.Collections.ArrayList
  34.  
  35.     foreach ($MH in $MessageHistory) {
  36.         if ($Null -ne $MH.MessagesAdded) {
  37.             $Unread = if($null -ne $MH.MessagesAdded -and `
  38.                 $null -ne $MH.MessagesAdded[0].Message.LabelIds -and `
  39.                 $MH.MessagesAdded[0].Message.LabelIds -contains "UNREAD"){"UNREAD"}else{"READ"}
  40.             $Results.Add((new-object -TypeName psobject -Property `
  41.                 @{"History"=$MH.Id;"Action"="Message Added";"Status"=$Unread})) | Out-Null
  42.         }
  43.  
  44.         if ($Null -ne $MH.MessagesDeleted) {
  45.             $Unread = if($null -ne $MH.MessagesDeleted -and `
  46.                 $null -ne $MH.MessagesDeleted[0].Message.LabelIds -and `
  47.                 $MH.MessagesDeleted[0].Message.LabelIds -contains "UNREAD"){"UNREAD"}else{"READ"}
  48.             $Results.Add((new-object -TypeName psobject -Property `
  49.                 @{"History"=$MH.Id;"Action"="Message Removed";"Status"=$Unread})) | Out-Null
  50.         }
  51.  
  52.         if ($Null -ne $MH.LabelsAdded) {
  53.             $Unread = if($null -ne $MH.LabelsAdded -and `
  54.                 $null -ne $MH.LabelsAdded[0].Message.LabelIds -and `
  55.                 $MH.LabelsAdded[0].Message.LabelIds -contains "UNREAD"){"UNREAD"}else{"READ"}
  56.             $Results.Add((new-object -TypeName psobject -Property `
  57.                 @{"History"=$MH.Id;"Action"="Labels Added";"Status"=$Unread})) | Out-Null
  58.         }
  59.  
  60.         if ($Null -ne $MH.LabelsRemoved) {
  61.             $Unread = if($null -ne $MH.LabelsRemoved -and `
  62.                 $null -ne $MH.LabelsRemoved[0].Message.LabelIds -and `
  63.                 $MH.LabelsRemoved[0].Message.LabelIds -contains "UNREAD"){"UNREAD"}else{"READ"}
  64.             $Results.Add((new-object -TypeName psobject -Property `
  65.                 @{"History"=$MH.Id;"Action"="Labels Removed";"Status"=$Unread})) | Out-Null
  66.         }
  67.     }
  68.  
  69.     return $Results
  70. }
  71.  
  72. #Get-MessageUnreadHistoryByMessageId -MessageId CAD3t3Ryd71hXYfA@mail.gmail.com -TargetUserEmail username
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement