Las secuencias de comandos de Google Ads permiten administrar algunas 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. Para realizar operaciones más avanzadas, consulta el resto de esta guía, que muestra un enfoque más genérico con mutate
.
Recuperación de campañas de máximo rendimiento
Las campañas de máximo rendimiento están disponibles a través de la recopilación de 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 grupos de anuncios ni objetos de anuncios que puedas ver. Todo lo relacionado con estos conceptos para otras campañas se controla automáticamente en función de los grupos de recursos que establezcas.
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, que tú proporcionas o que se generan automáticamente. Para obtener una descripción general completa de los tipos de recursos necesarios, 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 las secuencias de comandos, pero puedes agregar y quitar recursos de un grupo de recursos existente.
Agrega un 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 activo 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 los recursos en los que deseas trabajar. Consulta la documentación de referencia de AssetSelector
para ver una lista completa de las opciones de filtro.
Por último, recupera el iterador y realiza la iteración como con otras entidades:
const assetIterator = assetSelector.get();
for (const asset of assetIterator) {
...
}
Recursos de texto
Los recursos de texto funcionan de manera un poco diferente, ya que no es necesario crearlos con anticipación. 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 usar el recurso existente.
Por ejemplo, a continuación, se muestra cómo crear un activo de título:
assetGroup.addAsset('asset text here', 'HEADLINE');
Cómo quitar un recurso de un 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 ciertos tipos de recursos para que la campaña sea válida.
A continuación, se muestra cómo quitar el recurso que se agregó en el ejemplo anterior:
assetGroup.removeAsset(imageAsset, 'MARKETING_IMAGE');
También puedes obtener una lista de recursos de un grupo de recursos 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}'`
);
Esto 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 para crear tu propia consulta.
Una vez que tengas el recurso de destino, 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);