Лучший способ управлять кампаниями Performance Max с помощью скриптов Google Ads — использовать стратегию mutate для прямого управления этими кампаниями . Кампании Performance Max можно создать только с помощью функции mutate . Однако, при желании, вы также можете использовать другие объекты AdsApp для получения информации о кампаниях Performance Max, управления группами ресурсов и создания отчетов.
Получение данных о кампаниях Performance Max
Кампании Performance Max доступны через коллекцию performanceMaxCampaigns объекта AdsApp . Вы можете получить к ним доступ обычным способом:
const campaignName = "My Performance Max campaign";
const campaignIterator = AdsApp.performanceMaxCampaigns()
.withCondition(`campaign.name = "${campaignName}"`)
.get();
for (const campaign of campaignIterator) {
...
}
В отличие от некоторых других типов кампаний, в кампаниях Performance Max нет видимых групп объявлений или объектов объявлений; все, что связано с этими понятиями для других кампаний, обрабатывается автоматически на основе заданных вами групп ресурсов.
Активы и группы активов
В кампаниях Performance Max для показа рекламы используются такие ресурсы , как видео, изображения, заголовки и описания — предоставленные вами или сгенерированные автоматически. Полный обзор необходимых ресурсов см. в руководстве по ресурсам Google Ads API Performance Max .
Ресурсы для кампаний Performance Max объединены в группы ресурсов, и каждая кампания Performance Max должна иметь как минимум одну группу ресурсов. Вы не можете создавать эти группы ресурсов непосредственно в скриптах, но вы можете добавлять и удалять ресурсы из существующих групп ресурсов.
Добавить актив в группу активов
Сначала создайте ресурс:
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();
Затем, используя только что созданный ресурс, добавьте его в существующую группу ресурсов:
// 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');
Обратите внимание, что на последнем шаге необходимо указать тип ресурса. Полный список типов ресурсов можно найти в документации Google Ads API.
Чтобы использовать существующий ресурс, сначала создайте селектор ресурсов:
const assetSelector = AdsApp.adAssets().assets();
Затем используйте фильтр withCondition , чтобы сузить круг поиска до активов, с которыми вы хотите работать. Полный список параметров фильтра см. в разделе AssetSelector .
Наконец, получите итератор и выполните итерацию, как и с другими сущностями:
const assetIterator = assetSelector.get();
for (const asset of assetIterator) {
...
}
Текстовые материалы
Текстовые ресурсы работают несколько иначе: вам не нужно создавать ресурс заранее. Вы просто указываете текст вместо ресурса, и система автоматически создаст ресурс для вас. Если текст является точной копией существующего текстового ресурса, будет использован именно существующий ресурс.
Например, вот как создать заголовок:
assetGroup.addAsset('asset text here', 'HEADLINE');
Удалить актив из группы активов
Вы также можете удалить актив из группы активов; однако имейте в виду, что каждая группа активов должна содержать минимальное количество активов определенного типа, чтобы кампания была действительной.
Вот как удалить ресурс, добавленный в предыдущем примере:
assetGroup.removeAsset(imageAsset, 'MARKETING_IMAGE');
Также с помощью функции 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}'`
);
В качестве уникального идентификатора выбирается имя ресурса актива. Вы также можете выбрать другие поля, такие как asset.type или asset.text_asset.text , чтобы дополнительно уточнить результаты. Используйте конструктор запросов для этого типа отчета , чтобы создать собственный запрос.
После того, как вы определили целевой актив, вызовите функцию remove для группы активов, чтобы удалить актив из группы активов:
// 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);