Sample code for 30+ languages & platforms
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

PureBasic
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