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
(Ruby) BatchModify - Add a Label to each Message in Search ResultsSearchs GMail for messages meeting a criteria and adds a label to each message found.
require 'chilkat' # This example requires the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. http = Chilkat::CkHttp.new() http.put_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 = Chilkat::CkStringBuilder.new() success = http.QuickGetSb(url,sb) if (success != true) print http.lastErrorText() + "\n"; exit end json = Chilkat::CkJsonObject.new() json.LoadSb(sb) json.put_EmitCompact(false) print json.emit() + "\n"; if (http.get_LastStatus() != 200) print "Failed." + "\n"; exit end # 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 = Chilkat::CkJsonObject.new() i = 0 numMessages = json.SizeOfArray("messages") while (i < numMessages) json.put_I(i) id = json.stringOf("messages[i].id") json2.put_I(i) json2.UpdateString("ids[i]",id) i = i + 1 end # 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.put_EmitCompact(false) print json2.emit() + "\n"; # Send the batchModify url = "https://www.googleapis.com/gmail/v1/users/{$userId}/messages/batchModify" # resp is a CkHttpResponse resp = http.PostJson3(url,"application/json",json2) if (http.get_LastMethodSuccess() != true) print http.lastErrorText() + "\n"; exit end print "status = " + resp.get_StatusCode().to_s() + "\n"; # A 204 response status indicate success. if (resp.get_StatusCode() != 204) print resp.bodyStr() + "\n"; print "Failed." + "\n"; exit end # The 204 response has an empty response body.. print "BatchModify success!" + "\n"; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.