Estructura de API

Video: Mira la charla sobre servicios y recursos del taller de 2019

En esta guía, se presentan los componentes principales de la API de Google Ads. La API de Google Ads consta de recursos y servicios. Un recurso representa una entidad de Google Ads, mientras que los servicios recuperan y manipulan las entidades de Google Ads.

Jerarquía de objetos

Una cuenta de Google Ads se puede ver como una jerarquía de objetos.

Modelo de campaña

  • El recurso de nivel superior de una cuenta es el cliente.

  • Cada cliente contiene una o más campañas activas.

  • Cada campaña contiene uno o más grupos de anuncios, que se usan para agrupar los anuncios en colecciones lógicas.

  • Un anuncio del grupo de anuncios representa un anuncio que publicas. Excepto para las campañas de aplicaciones que pueden tener solo un anuncio por grupo, cada grupo contiene uno o más anuncios.

Puedes adjuntar uno o más AdGroupCriterion o CampaignCriterion a un grupo de anuncios o una campaña. que representan criterios que definen cómo se activan los anuncios.

Existen muchos tipos de criterios, como palabras clave, rangos de edad y ubicaciones. Los criterios definidos a nivel de la campaña afectan a todos los demás recursos dentro de la campaña. También puedes especificar presupuestos y fechas para toda la campaña.

Por último, puedes adjuntar extensiones a nivel de la cuenta, la campaña o el grupo de anuncios. Las extensiones te permiten proporcionar información adicional a tus anuncios, como el número de teléfono, la dirección o promociones.

Recursos

Los recursos representan las entidades dentro de tu cuenta de Google Ads. Campaign y AdGroup son dos ejemplos de recursos.

IDs de objeto

Cada objeto de Google Ads se identifica con su propio ID. Algunos de estos IDs son únicos a nivel global en todas las cuentas de Google Ads, mientras que otros son únicos dentro de un alcance limitado.

ID de objeto Alcance de la singularidad ¿Único a nivel global?
ID de presupuesto Globales
Campaign ID Globales
ID del grupo de anuncios Globales
ID del anuncio Ad Group No, pero el par (AdGroupId, AdId) es único a nivel global
ID de criterio del grupo de anuncios Ad Group No, pero el par (AdGroupId, CriterionId) es único a nivel global
ID de criterio de campaña Campaña No, pero el par (CampaignId, CriterionId) es único a nivel global
Extensiones de anuncios Campaña No, pero el par (CampaignId, AdExtensionId) es único a nivel global
ID del feed Globales
ID de elemento del feed Globales
ID del atributo del feed Feed No
ID de asignación de feed Globales
ID de etiqueta Globales
ID de lista de usuarios Globales

Estas reglas de ID pueden ser útiles cuando diseñas un almacenamiento local para tus objetos de Google Ads.

Algunos objetos se pueden usar para varios tipos de entidades. En esos casos, el objeto contiene un campo type que describe su contenido. Por ejemplo, AdGroupAd puede hacer referencia a un objeto, como un anuncio de texto, de hotel o local. Se puede acceder a este valor a través del campo AdGroupAd.ad.type, y muestra un valor en la enumeración AdType.

Nombres de recursos

Cada recurso se identifica de forma única mediante una string resource_name, que concatena el recurso y sus elementos superiores en una ruta. Por ejemplo, los nombres de los recursos de las campañas tienen el siguiente formato:

customers/customer_id/campaigns/campaign_id

Por lo tanto, para una campaña con el ID 987654 en la cuenta de Google Ads con el ID de cliente 1234567, el resource_name sería el siguiente:

customers/1234567/campaigns/987654

Servicios

Los servicios te permiten recuperar y modificar tus entidades de Google Ads. Existen tres tipos de servicios: modificación, recuperación de objetos y estadísticas y servicios de recuperación de metadatos.

Modificar (mutar) objetos

Estos servicios modifican instancias de un tipo de recurso asociado mediante una solicitud mutate. También proporcionan una solicitud get que recupera una sola instancia de recurso, que puede ser útil para examinar la estructura de un recurso.

Ejemplos de servicios:

Cada solicitud de mutate debe incluir los objetos operation correspondientes. Por ejemplo, el método CampaignService.MutateCampaigns espera una o más instancias de CampaignOperation. Consulta Inspecciona y cambia objetos para obtener un análisis detallado de las operaciones.

Mutaciones simultáneas

Más de una fuente no puede modificar un objeto de Google Ads de forma simultánea. Esto podría generar errores si hay varios usuarios que actualizan el mismo objeto con tu app o si haces mutación de objetos de Google Ads en paralelo usando varios subprocesos. Esto incluye actualizar el objeto desde varios subprocesos en la misma aplicación o desde diferentes aplicaciones (por ejemplo, tu app y una sesión simultánea de la IU de Google Ads).

La API no proporciona una forma de bloquear un objeto antes de la actualización. Si dos fuentes intentan mutar un objeto en simultáneo, la API genera una DatabaseError.CONCURRENT_MODIFICATION_ERROR.

Mutaciones asíncronas o síncronas

Los métodos de modificación de la API de Google Ads son síncronos. Las llamadas a la API muestran una respuesta solo después de mutar los objetos, por lo que debes esperar una respuesta para cada solicitud. Si bien este enfoque es relativamente sencillo de programar, podría tener un impacto negativo en el balanceo de cargas y desperdiciar recursos si los procesos se ven forzados a esperar a que se completen las llamadas.

Un enfoque alternativo es cambiar los objetos de forma asíncrona mediante BatchJobService, que realiza lotes de operaciones en varios servicios sin esperar a que se completen. Una vez que se envía un trabajo por lotes, los servidores de la API de Google Ads ejecutan operaciones de manera asíncrona, lo que libera los procesos para que realicen otras operaciones. Puedes verificar periódicamente el estado del trabajo para ver si se completó.

Consulta la guía de procesamiento por lotes para obtener más información sobre el procesamiento asíncrono.

Modificación de validación

La mayoría de las solicitudes de mutación se pueden validar sin ejecutar realmente la llamada con datos reales. Puedes probar la solicitud para detectar parámetros faltantes y valores de campo incorrectos sin ejecutar la operación.

Para usar esta función, configura el campo booleano opcional validate_only de la solicitud en true. La solicitud se validará por completo como si se fuera a ejecutar, pero se omite la ejecución final. Si no se encuentran errores, se muestra una respuesta vacía. Si la validación falla, los mensajes de error de la respuesta indicarán los puntos de falla.

validate_only es particularmente útil para probar anuncios en busca de incumplimientos de políticas comunes. Los anuncios se rechazan automáticamente si infringen políticas, como tener palabras específicas, puntuación, uso de mayúsculas o longitud. Un solo anuncio inapropiado podría provocar que falle todo un lote. Probar un anuncio nuevo en una solicitud validate_only puede revelar esos incumplimientos. Consulta el ejemplo de código para manejar errores por incumplimiento de políticas y ver cómo funciona.

Cómo obtener objetos y estadísticas de rendimiento

GoogleAdsService es el servicio único y unificado para recuperar objetos y estadísticas de rendimiento.

Todas las solicitudes Search y SearchStream para GoogleAdsService requieren una consulta que especifique el recurso que se consulta, los atributos de recursos y las métricas de rendimiento que se recuperarán, los predicados que se usarán para filtrar la solicitud y los segmentos que se usarán para desglosar aún más las estadísticas de rendimiento. Para obtener más información sobre el formato de la búsqueda, consulta la guía del lenguaje de consulta de Google Ads.

Cómo recuperar metadatos

GoogleAdsFieldService recupera metadatos sobre los recursos en la API de Google Ads, como los atributos disponibles para un recurso y su tipo de datos.

Este servicio proporciona la información necesaria para construir una consulta a GoogleAdsService. Para mayor comodidad, la información que muestra GoogleAdsFieldService también está disponible en la documentación de referencia de campos.