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