Sample code for 30+ languages & platforms
Xbase++

Find a Label ID by Name

See more GMail REST API Examples

Lookup the ID of a GMail label by the label name.

Chilkat Xbase++ Downloads

Xbase++
LOCAL nSuccess
LOCAL oHttp
LOCAL cUserId
LOCAL cUrl
LOCAL oSb
LOCAL oJson
LOCAL oJRecord

nSuccess := 0

//  This example requires the Chilkat API to have been previously unlocked.
//  See Global Unlock Sample for sample code.

oHttp := CreateObject("Chilkat.Http")
oHttp:AuthToken := "GMAIL-ACCESS-TOKEN"

cUserId := "me"
oHttp:SetUrlVar("userId", cUserId)

cUrl := "https://www.googleapis.com/gmail/v1/users/{$userId}/labels"

//  Get the list of GMail labels as JSON.
oSb := CreateObject("Chilkat.StringBuilder")
nSuccess := oHttp:QuickGetSb(cUrl, oSb)
IF (nSuccess != 1)
    ? oHttp:LastErrorText
    oHttp:destroy()
    oSb:destroy()
    RETURN
ENDIF

oJson := CreateObject("Chilkat.JsonObject")
oJson:LoadSb(oSb)
oJson:EmitCompact := 0
? oJson:Emit()

IF (oHttp:LastStatus != 200)
    ? "Failed."
    oHttp:destroy()
    oSb:destroy()
    oJson:destroy()
    RETURN
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...
oJRecord := oJson:FindRecord("labels", "name", "QA", 0)
IF (oJson:LastMethodSuccess == 1)
    ? "The id of QA is: " + oJRecord:StringOf("id")
    oJRecord:destroy()
ENDIF

oJRecord := oJson:FindRecord("labels", "name", "[Gmail]/testFolder", 0)
IF (oJson:LastMethodSuccess == 1)
    ? "The id of [Gmail]/testFolder is: " + oJRecord:StringOf("id")
    oJRecord:destroy()
ENDIF

oJRecord := oJson:FindRecord("labels", "name", "questions", 0)
IF (oJson:LastMethodSuccess == 1)
    ? "The id of questions is: " + oJRecord:StringOf("id")
    oJRecord:destroy()
ENDIF

//  Output:

//  The id of QA is: Label_5
//  The id of [Gmail]/testFolder is: Label_21
//  The id of questions is: Label_43

oHttp:destroy()
oSb:destroy()
oJson:destroy()