Sample code for 30+ languages & platforms
Visual FoxPro

Find a Label ID by Name

See more GMail REST API Examples

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

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loHttp
LOCAL lcUserId
LOCAL lcUrl
LOCAL loSb
LOCAL loJson
LOCAL loJRecord

lnSuccess = 0

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

loHttp = CreateObject('Chilkat.Http')
loHttp.AuthToken = "GMAIL-ACCESS-TOKEN"

lcUserId = "me"
loHttp.SetUrlVar("userId",lcUserId)

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

*  Get the list of GMail labels as JSON.
loSb = CreateObject('Chilkat.StringBuilder')
lnSuccess = loHttp.QuickGetSb(lcUrl,loSb)
IF (lnSuccess <> 1) THEN
    ? loHttp.LastErrorText
    RELEASE loHttp
    RELEASE loSb
    CANCEL
ENDIF

loJson = CreateObject('Chilkat.JsonObject')
loJson.LoadSb(loSb)
loJson.EmitCompact = 0
? loJson.Emit()

IF (loHttp.LastStatus <> 200) THEN
    ? "Failed."
    RELEASE loHttp
    RELEASE loSb
    RELEASE loJson
    CANCEL
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...
loJRecord = loJson.FindRecord("labels","name","QA",0)
IF (loJson.LastMethodSuccess = 1) THEN
    ? "The id of QA is: " + loJRecord.StringOf("id")
    RELEASE loJRecord
ENDIF

loJRecord = loJson.FindRecord("labels","name","[Gmail]/testFolder",0)
IF (loJson.LastMethodSuccess = 1) THEN
    ? "The id of [Gmail]/testFolder is: " + loJRecord.StringOf("id")
    RELEASE loJRecord
ENDIF

loJRecord = loJson.FindRecord("labels","name","questions",0)
IF (loJson.LastMethodSuccess = 1) THEN
    ? "The id of questions is: " + loJRecord.StringOf("id")
    RELEASE loJRecord
ENDIF

*  Output:

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

RELEASE loHttp
RELEASE loSb
RELEASE loJson