PureBasic
PureBasic
Find a Label ID by Name
See more GMail REST API Examples
Lookup the ID of a GMail label by the label name.Chilkat PureBasic Downloads
IncludeFile "CkHttp.pb"
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkJsonObject.pb"
Procedure ChilkatExample()
success.i = 0
; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
http.i = CkHttp::ckCreate()
If http.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkHttp::setCkAuthToken(http, "GMAIL-ACCESS-TOKEN")
userId.s = "me"
CkHttp::ckSetUrlVar(http,"userId",userId)
url.s = "https://www.googleapis.com/gmail/v1/users/{$userId}/labels"
; Get the list of GMail labels as JSON.
sb.i = CkStringBuilder::ckCreate()
If sb.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkHttp::ckQuickGetSb(http,url,sb)
If success <> 1
Debug CkHttp::ckLastErrorText(http)
CkHttp::ckDispose(http)
CkStringBuilder::ckDispose(sb)
ProcedureReturn
EndIf
json.i = CkJsonObject::ckCreate()
If json.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::ckLoadSb(json,sb)
CkJsonObject::setCkEmitCompact(json, 0)
Debug CkJsonObject::ckEmit(json)
If CkHttp::ckLastStatus(http) <> 200
Debug "Failed."
CkHttp::ckDispose(http)
CkStringBuilder::ckDispose(sb)
CkJsonObject::ckDispose(json)
ProcedureReturn
EndIf
; The JSON returned looks like this:
; {
; "labels": [
; {
; "id": "Label_5",
; "name": "QA",
; "messageListVisibility": "show",
; "labelListVisibility": "labelShow",
; "type": "user"
; },
; {
; "id": "Label_21",
; "name": "[Gmail]/testFolder",
; "type": "user"
; },
; {
; "id": "CATEGORY_PERSONAL",
; "name": "CATEGORY_PERSONAL",
; "type": "system"
; },
; ...
; The name of the label is generally known because it's what we visually see.
; The id is what we need to get. Assuming the name is unique,
; find the JSON record having name=<desired name>
; For example...
jRecord.i = CkJsonObject::ckFindRecord(json,"labels","name","QA",0)
If CkJsonObject::ckLastMethodSuccess(json) = 1
Debug "The id of QA is: " + CkJsonObject::ckStringOf(jRecord,"id")
CkJsonObject::ckDispose(jRecord)
EndIf
jRecord = CkJsonObject::ckFindRecord(json,"labels","name","[Gmail]/testFolder",0)
If CkJsonObject::ckLastMethodSuccess(json) = 1
Debug "The id of [Gmail]/testFolder is: " + CkJsonObject::ckStringOf(jRecord,"id")
CkJsonObject::ckDispose(jRecord)
EndIf
jRecord = CkJsonObject::ckFindRecord(json,"labels","name","questions",0)
If CkJsonObject::ckLastMethodSuccess(json) = 1
Debug "The id of questions is: " + CkJsonObject::ckStringOf(jRecord,"id")
CkJsonObject::ckDispose(jRecord)
EndIf
; Output:
; The id of QA is: Label_5
; The id of [Gmail]/testFolder is: Label_21
; The id of questions is: Label_43
CkHttp::ckDispose(http)
CkStringBuilder::ckDispose(sb)
CkJsonObject::ckDispose(json)
ProcedureReturn
EndProcedure