Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(AutoIt) BatchModify - Add a Label to each Message in Search ResultsSearchs GMail for messages meeting a criteria and adds a label to each message found.
; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. Local $bSuccess $oHttp = ObjCreate("Chilkat.Http") $oHttp.AuthToken = "GMAIL-ACCESS-TOKEN" Local $sUserId = "me" $oHttp.SetUrlVar("userId",$sUserId) Local $sQuery = "subject:questions" $oHttp.SetUrlVar("query",$sQuery) Local $sUrl = "https://www.googleapis.com/gmail/v1/users/{$userId}/messages?q={$query}" $oSb = ObjCreate("Chilkat.StringBuilder") $bSuccess = $oHttp.QuickGetSb($sUrl,$oSb) If ($bSuccess <> True) Then ConsoleWrite($oHttp.LastErrorText & @CRLF) Exit EndIf $oJson = ObjCreate("Chilkat.JsonObject") $oJson.LoadSb($oSb) $oJson.EmitCompact = False ConsoleWrite($oJson.Emit() & @CRLF) If ($oHttp.LastStatus <> 200) Then ConsoleWrite("Failed." & @CRLF) Exit EndIf ; 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. $oJson2 = ObjCreate("Chilkat.JsonObject") Local $i = 0 Local $iNumMessages = $oJson.SizeOfArray("messages") While ($i < $iNumMessages) $oJson.I = $i Local $sId = $oJson.StringOf("messages[i].id") $oJson2.I = $i $oJson2.UpdateString("ids[i]",$sId) $i = $i + 1 Wend ; 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" Local $sLabelId = "Label_43" $oJson2.UpdateString("addLabelIds[0]",$sLabelId) $oJson2.UpdateNewArray("removeLabelIds") $oJson2.EmitCompact = False ConsoleWrite($oJson2.Emit() & @CRLF) ; Send the batchModify $sUrl = "https://www.googleapis.com/gmail/v1/users/{$userId}/messages/batchModify" Local $oResp = $oHttp.PostJson3($sUrl,"application/json",$oJson2) If ($oHttp.LastMethodSuccess <> True) Then ConsoleWrite($oHttp.LastErrorText & @CRLF) Exit EndIf ConsoleWrite("status = " & $oResp.StatusCode & @CRLF) ; A 204 response status indicate success. If ($oResp.StatusCode <> 204) Then ConsoleWrite($oResp.BodyStr & @CRLF) ConsoleWrite("Failed." & @CRLF) Exit EndIf ; The 204 response has an empty response body.. ConsoleWrite("BatchModify success!" & @CRLF) |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.