Campañas de rendimiento máx.

Las secuencias de comandos de Google Ads permiten administrar cierta información de tus campañas de máximo rendimiento. Puedes usar secuencias de comandos para recuperar campañas de máximo rendimiento, administrar grupos de recursos y ejecutar informes. Sin embargo, no puedes usar secuencias de comandos para crear campañas de máximo rendimiento.

Recuperación de campañas de máximo rendimiento

Las campañas de máximo rendimiento están disponibles a través de la colección performanceMaxCampaigns de un objeto AdsApp. Puedes recuperarlos como de costumbre:

const campaignName = "My Performance Max campaign";

const campaignIterator = AdsApp.performanceMaxCampaigns()
    .withCondition(`campaign.name = "${campaignName}"`)
    .get();

for (const campaign of campaignIterator) {
  ...
}

A diferencia de otros tipos de campañas, las campañas de máximo rendimiento no tienen objetos de anuncios ni grupos de anuncios que puedas ver. Todo lo relacionado con estos conceptos para otras campañas se controla automáticamente por ti según los grupos de recursos que configures.

Recursos y grupos de recursos

Los anuncios de las campañas de máximo rendimiento se publican a partir de recursos, como videos, imágenes, títulos y descripciones, ya sean proporcionados por ti o generados automáticamente. Para obtener una descripción general completa de qué tipos de recursos se requieren, consulta la guía de recursos de las campañas de máximo rendimiento de la API de Google Ads.

Los recursos de las campañas de máximo rendimiento se agrupan en un grupo de recursos, y cada campaña de máximo rendimiento debe tener, al menos, un grupo de recursos. No puedes crear estos grupos de recursos directamente en secuencias de comandos, pero puedes agregar y quitar recursos de un grupo de recursos existente.

Agregar recurso al grupo de recursos

Primero, crea el recurso:

const imageUrl = "http://www.example.com/example.png";
const imageBlob = UrlFetchApp.fetch(imageUrl).getBlob();
const assetOperation = AdsApp.adAssets().newImageAssetBuilder()
   .withName("new asset name")
   .withData(imageBlob)
   .build();
const imageAsset = assetOperation.getResult();

Luego, con el recurso que acabas de crear, agrégalo a un grupo de recursos existente:

// First, fetch the Performance Max campaign we want to operate on.
const campaignIterator = AdsApp.performanceMaxCampaigns()
   .withCondition(`campaign.name = '${campaignName}'`)
   .get();
let campaign;
if (campaignIterator.hasNext()) {
   campaign = campaignIterator.next();
} else {
   throw `No campaign found with name ${campaignName}.`
}

// Then, get that campaign's asset groups.
const assetGroupIterator = campaign.assetGroups().get();

// The campaign must have at least one asset group, so we can just assume so here.
const assetGroup = assetGroupIterator.next();

// Add the asset from the previous step.
assetGroup.addAsset(imageAsset, 'MARKETING_IMAGE');

Ten en cuenta que debes especificar el tipo de recurso en el último paso. Puedes encontrar una lista completa de los tipos de recursos en la documentación de la API de Google Ads.

Para usar un recurso existente, primero crea un selector de recursos:

const assetSelector = AdsApp.adAssets().assets();

Luego, usa un filtro withCondition para limitar las opciones a los recursos en los que deseas operar. Consulta la documentación de referencia de AssetSelector para obtener una lista completa de las opciones de filtro.

Por último, recupera el iterador y, luego, itera igual que con otras entidades:

const assetIterator = assetSelector.get();

for (const asset of assetIterator) {
   ...
}

Recursos de texto

Los recursos de texto funcionan de manera diferente, ya que no necesitas crear el recurso por adelantado. Solo debes especificar el texto en lugar de un recurso, y el sistema lo creará automáticamente. Si el texto es un duplicado exacto de un recurso de texto existente, se volverá a utilizar ese recurso en su lugar.

Por ejemplo, a continuación se explica cómo crear un recurso de título:

assetGroup.addAsset('asset text here', 'HEADLINE');

Quitar recurso del grupo de recursos

También puedes quitar un recurso de un grupo de recursos. Sin embargo, ten en cuenta que debes tener una cantidad mínima de determinados tipos de recursos para que la campaña sea válida.

Sigue estos pasos para quitar el recurso que se agregó en el ejemplo anterior:

assetGroup.removeAsset(imageAsset, 'MARKETING_IMAGE');

También puedes obtener una lista de elementos en un grupo determinado con la función search:

// The resource name is a unique identifier for this asset group.
const assetGroupName = assetGroup.getResourceName();
results = AdsApp.search(
   `SELECT asset.resource_name, asset_group_asset.field_type
    FROM asset_group_asset
    WHERE asset_group.resource_name = '${assetGroupName}'`
);

De esta forma, se selecciona el nombre del recurso del activo como su identificador único. También puedes seleccionar otros campos, como asset.type o asset.text_asset.text, para definir mejor los resultados. Usa el compilador de consultas para este tipo de informe a fin de crear tu propia consulta.

Una vez que tengas el recurso de segmentación, llama a remove en el grupo de recursos para quitarlo del grupo:

// Let's assume at least one asset is returned. We'll just remove the first
// asset, whatever it is. In your code, customize this to choose the right asset.
const row_info = results.next().asset;
assetGroup.remove(row_info.asset.resource_name, row_info.asset_group_asset.field_type);

informes

Las campañas de máximo rendimiento se registran en el recurso campaign junto con otros tipos de campañas. Para comenzar, puedes usar algo como lo siguiente:

SELECT
  campaign.id,
  campaign.url_expansion_opt_out,
  campaign.status,
  campaign.bidding_strategy_type,
  metrics.clicks,
  metrics.cost_micros,
  metrics.impressions,
  metrics.conversions,
  metrics.all_conversions
FROM campaign
WHERE campaign.advertising_channel_type = 'PERFORMANCE_MAX'
  AND metrics.clicks > 0

No selecciones ningún campo de ad_group, ya que las campañas de máximo rendimiento no tienen ningún grupo de anuncios, por lo que no se mostrará ninguno. Además, asset_group no se puede segmentar. Obtén más información sobre los informes en nuestra guía de informes.

También puedes generar informes directamente sobre los grupos de recursos. Para obtener más información sobre cómo lograrlo, consulta la guía sobre el tema de la API de Google Ads. Puedes tomar cualquier consulta que veas allí y ejecutarla a través del método AdsApp.search en las secuencias de comandos de Google Ads para obtener los mismos resultados.