Puedes usar GoogleAdsFieldService para solicitar de forma dinámica el catálogo de recursos, los campos de los recursos, las claves de segmentación y las métricas disponibles en los métodos Search y SearchStream de GoogleAdsService. El catálogo proporciona metadatos que los clientes de la API de Google Ads pueden usar para validar y construir instrucciones del lenguaje de consultas de Google Ads.
Ejemplo de solicitud y respuesta HTTP
La solicitud consta de un HTTP GET al servidor de la API de Google Ads en la siguiente URL:
https://googleads.googleapis.com/v22/googleAdsFields/{resource_or_field}
En el siguiente ejemplo, se muestra una solicitud seguida de la respuesta que devolvió GoogleAdsFieldService para el recurso ad_group:
Solicitud
https://googleads.googleapis.com/v22/googleAdsFields/ad_group
Respuesta
{
  "resourceName": "googleAdsFields/ad_group",
  "name": "ad_group",
  "category": "RESOURCE",
  "selectable": false,
  "filterable": false,
  "sortable": false,
  "selectableWith": [
    "campaign",
    "customer",
    "metrics.average_cpc",
    "segments.device",
    ...
  ],
  "attributeResources": [
    "customer",
    "campaign"
  ],
  "metrics": [
    "metrics.conversions",
    "metrics.search_budget_lost_impression_share",
    "metrics.average_cost",
    "metrics.clicks",
    ...
  ],
  "segments": [
    "segments.date",
    "segments.ad_network_type",
    "segments.device",
    ...
  ]
}
En este ejemplo, los arrays importantes son los siguientes:
- attributeResources
- Recursos que se pueden unir de forma implícita al recurso en la cláusula FROM.
- metrics
- Son las métricas que se pueden seleccionar con el recurso en la cláusula FROM. Solo se completa para los campos en los quecategoryesRESOURCE.
- segments
- Son las claves de segmentación que se pueden seleccionar con el recurso en la cláusula FROM. Estos segmentos dividen las métricas especificadas en la consulta. Solo se propaga para los campos en los quecategoryesRESOURCE.
- selectableWith
- 
  
- El atributo - selectableWithen un campo de recurso o segmento especifica otros recursos, segmentos o métricas que se pueden seleccionar en la misma consulta de GAQL. Este atributo es fundamental cuando deseas incluir campos de un recurso o segmento que no se especifica en la cláusula- FROM.
- Cuando crees una consulta de GAQL, ten en cuenta lo siguiente: -  El recurso en la cláusula FROMes la entidad principal. Siempre puedes seleccionar campos de este recurso.
- También puedes seleccionar métricas y segmentos compatibles que estén disponibles con la entidad principal.
-  Si incluyes campos de cualquier recurso o segmento fuera de la cláusula FROM, debes asegurarte de que ese recurso o segmento que no es deFROMsea compatible con todos los demás campos, segmentos y métricas que se seleccionen en la consulta.
 
-  El recurso en la cláusula 
- La lista de - selectableWithpara un recurso específico (llamémoslo Recurso A) contiene todos los demás recursos, segmentos y métricas que se pueden seleccionar junto con los campos del Recurso A cuando este no es la entidad principal.
- Ejemplo: 
- Considera esta consulta de ejemplo: - SELECT ad_group.id, segments.date, campaign.name FROM ad_group- La cláusula - FROMespecifica- ad_group.
- Esta consulta selecciona - ad_group.id(del recurso- FROM),- segments.datey- campaign.name.
- Debido a que se seleccionó - campaign.name, pero- campaignno está en la cláusula- FROM, debes verificar su compatibilidad con otros elementos seleccionados.
- Para garantizar que esta búsqueda sea válida, el recurso - campaigndebe ser compatible con- segments.date(se selecciona otro campo). Por lo tanto, debes verificar el atributo- selectableWithdel recurso- campaign. Si- segments.dateestá presente en la lista- selectableWithde- campaign, la búsqueda es válida.
 - Si seleccionas campos de un recurso que no está en la cláusula - FROM, la lista de- selectableWithde ese recurso debe incluir todos los demás segmentos y recursos presentes en tu cláusula- SELECT.
Detalles de los metadatos
Puedes solicitar el catálogo con GoogleAdsFieldService en los siguientes niveles:
- Recurso
- Por ejemplo, googleAdsFields/campaign.
- Campo del recurso
- Por ejemplo, googleAdsFields/campaign.name.
- Campo de segmentación
- Por ejemplo, googleAdsFields/segments.ad_network_type.
- Métrica
- Por ejemplo, googleAdsFields/metrics.clicks.