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
(Visual FoxPro) BatchModify - Add a Label to each Message in Search ResultsSearchs GMail for messages meeting a criteria and adds a label to each message found.
LOCAL lnSuccess LOCAL loHttp LOCAL lcUserId LOCAL lcQuery LOCAL lcUrl LOCAL loSb LOCAL loJson LOCAL loJson2 LOCAL i LOCAL lnNumMessages LOCAL lcId LOCAL lcLabelId LOCAL loResp * This example requires the Chilkat API to have been previously unlocked. * See Global Unlock Sample for sample code. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Http') loHttp = CreateObject('Chilkat.Http') loHttp.AuthToken = "GMAIL-ACCESS-TOKEN" lcUserId = "me" loHttp.SetUrlVar("userId",lcUserId) lcQuery = "subject:questions" loHttp.SetUrlVar("query",lcQuery) lcUrl = "https://www.googleapis.com/gmail/v1/users/{$userId}/messages?q={$query}" * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.StringBuilder') loSb = CreateObject('Chilkat.StringBuilder') lnSuccess = loHttp.QuickGetSb(lcUrl,loSb) IF (lnSuccess <> 1) THEN ? loHttp.LastErrorText RELEASE loHttp RELEASE loSb CANCEL ENDIF * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.JsonObject') loJson = CreateObject('Chilkat.JsonObject') loJson.LoadSb(loSb) loJson.EmitCompact = 0 ? loJson.Emit() IF (loHttp.LastStatus <> 200) THEN ? "Failed." RELEASE loHttp RELEASE loSb RELEASE loJson CANCEL 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. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.JsonObject') loJson2 = CreateObject('Chilkat.JsonObject') i = 0 lnNumMessages = loJson.SizeOfArray("messages") DO WHILE (i < lnNumMessages) loJson.I = i lcId = loJson.StringOf("messages[i].id") loJson2.I = i loJson2.UpdateString("ids[i]",lcId) i = i + 1 ENDDO * 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" lcLabelId = "Label_43" loJson2.UpdateString("addLabelIds[0]",lcLabelId) loJson2.UpdateNewArray("removeLabelIds") loJson2.EmitCompact = 0 ? loJson2.Emit() * Send the batchModify lcUrl = "https://www.googleapis.com/gmail/v1/users/{$userId}/messages/batchModify" loResp = loHttp.PostJson3(lcUrl,"application/json",loJson2) IF (loHttp.LastMethodSuccess <> 1) THEN ? loHttp.LastErrorText RELEASE loHttp RELEASE loSb RELEASE loJson RELEASE loJson2 CANCEL ENDIF ? "status = " + STR(loResp.StatusCode) * A 204 response status indicate success. IF (loResp.StatusCode <> 204) THEN ? loResp.BodyStr ? "Failed." RELEASE loResp RELEASE loHttp RELEASE loSb RELEASE loJson RELEASE loJson2 CANCEL ENDIF * The 204 response has an empty response body.. RELEASE loResp ? "BatchModify success!" RELEASE loHttp RELEASE loSb RELEASE loJson RELEASE loJson2 |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.