Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PowerShell) BatchModify - Add a Label to each Message in Search ResultsSearchs GMail for messages meeting a criteria and adds a label to each message found.
Add-Type -Path "C:\chilkat\ChilkatDotNet47-9.5.0-x64\ChilkatDotNet47.dll" # This example requires the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. $http = New-Object Chilkat.Http $http.AuthToken = "GMAIL-ACCESS-TOKEN" $userId = "me" $http.SetUrlVar("userId",$userId) $query = "subject:questions" $http.SetUrlVar("query",$query) $url = "https://www.googleapis.com/gmail/v1/users/{$userId}/messages?q={$query}" $sb = New-Object Chilkat.StringBuilder $success = $http.QuickGetSb($url,$sb) if ($success -ne $true) { $($http.LastErrorText) exit } $json = New-Object Chilkat.JsonObject $json.LoadSb($sb) $json.EmitCompact = $false $($json.Emit()) if ($http.LastStatus -ne 200) { $("Failed.") exit } # If successful, the received JSON looks like this: # { # "messages": [ # { # "id": "166f583051d36144", # "threadId": "166f583051d36144" # }, # { # "id": "166f5815e1f36144", # "threadId": "166f5815e1f36144" # }, # ... # { # "id": "166f580639e36144", # "threadId": "166f580639e36144" # }, # { # "id": "15dbc2e28ec789c6", # "threadId": "15dbc2e28ec789c6" # } # ], # "nextPageToken": "13434766102274844688", # "resultSizeEstimate": 103 # } # # Next, we'll be sending an HTTP POST to add the label "questions" to each message in the # search results. The JSON to be sent for the batchModify is this: # { # "ids": [ # string # ], # "addLabelIds": [ # string # ], # "removeLabelIds": [ # string # ] # } # We'll omit "removeLabelIds" because we're not removing any labels. # We are parsing the JSON search results, and at the same time building the batchModify JSON. $json2 = New-Object Chilkat.JsonObject $i = 0 $numMessages = $json.SizeOfArray("messages") while (($i -lt $numMessages)) { $json.I = $i $id = $json.StringOf("messages[i].id") $json2.I = $i $json2.UpdateString("ids[i]",$id) $i = $i + 1 } # We need the id of the label (not the name). # I know the name of the label is "questions", but I need to know the id. # See this example: Get Label Id by Name # The id of my label named "questions" is "Label_43" $labelId = "Label_43" $json2.UpdateString("addLabelIds[0]",$labelId) $json2.UpdateNewArray("removeLabelIds") $json2.EmitCompact = $false $($json2.Emit()) # Send the batchModify $url = "https://www.googleapis.com/gmail/v1/users/{$userId}/messages/batchModify" $resp = $http.PostJson3($url,"application/json",$json2) if ($http.LastMethodSuccess -ne $true) { $($http.LastErrorText) exit } $("status = " + $resp.StatusCode) # A 204 response status indicate success. if ($resp.StatusCode -ne 204) { $($resp.BodyStr) $("Failed.") exit } # The 204 response has an empty response body.. $("BatchModify success!") |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.