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
(Perl) BatchModify - Add a Label to each Message in Search ResultsSearchs GMail for messages meeting a criteria and adds a label to each message found.
use 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 != 1) { print $http->lastErrorText() . "\r\n"; exit; } $json = chilkat::CkJsonObject->new(); $json->LoadSb($sb); $json->put_EmitCompact(0); print $json->emit() . "\r\n"; if ($http->get_LastStatus() != 200) { print "Failed." . "\r\n"; 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 = 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; } # 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(0); print $json2->emit() . "\r\n"; # Send the batchModify $url = "https://www.googleapis.com/gmail/v1/users/{$userId}/messages/batchModify"; # resp is a HttpResponse $resp = $http->PostJson3($url,"application/json",$json2); if ($http->get_LastMethodSuccess() != 1) { print $http->lastErrorText() . "\r\n"; exit; } print "status = " . $resp->get_StatusCode() . "\r\n"; # A 204 response status indicate success. if ($resp->get_StatusCode() != 204) { print $resp->bodyStr() . "\r\n"; print "Failed." . "\r\n"; exit; } # The 204 response has an empty response body.. print "BatchModify success!" . "\r\n"; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.