La mejor manera de administrar tus campañas de máximo rendimiento con secuencias de comandos de Google Ads es usar
la estrategia de mutación para administrar directamente tus
campañas de máximo rendimiento. Las campañas de máximo rendimiento solo se pueden crear con la función mutate. Sin embargo, si lo prefieres, también puedes usar otros objetos AdsApp para recuperar campañas de máximo rendimiento, administrar grupos de recursos y ejecutar informes.
Recuperación de campañas de máximo rendimiento
Las campañas de máximo rendimiento están disponibles a través de la
performanceMaxCampaigns colección de un AdsApp objeto. Puedes recuperarlas 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 administra automáticamente por ti 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, ya sea que los proporciones tú o que se generen automáticamente. Para obtener una descripción general completa de los tipos de recursos que 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 las secuencias de comandos, pero puedes agregar y quitar recursos de un grupo de recursos existente.
Cómo agregar un recurso a un 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 los recursos en los que deseas operar. Consulta AssetSelector para obtener 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 necesitas crear el recurso con anticipación. Solo debes especificar el texto en lugar de un recurso, y el sistema creará el recurso automáticamente por ti. Si el texto es una copia exacta de un recurso de texto existente, se volverá a usar el recurso existente.
Por ejemplo, así es cómo se crea un recurso 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 cada grupo de recursos debe tener una cantidad mínima de ciertos tipos de recursos para que la campaña sea válida.
Así es como se quita el recurso que se agregó en el ejemplo anterior:
assetGroup.removeAsset(imageAsset, 'MARKETING_IMAGE');
También puedes obtener una lista de recursos en 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 recurso 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 generador de consultas para este tipo de informe
para crear tu propia consulta.
Una vez que tengas el recurso objetivo, llama a remove en el grupo de recursos para quitar el recurso del grupo de recursos:
// This example assumes at least one asset is returned. We'll remove the first
// asset, whatever it is. In your code, customize this to choose the right
// asset to be removed.
const row_info = results.next().asset;
assetGroup.remove(row_info.asset.resource_name, row_info.asset_group_asset.field_type);