Кампании с максимальной эффективностью с использованием AdsApp

Скрипты Google Рекламы позволяют управлять кампаниями с максимальной эффективностью . Вы можете использовать скрипты для получения данных о кампаниях с максимальной эффективностью, управления группами объектов и создания отчетов; однако вы не можете использовать скрипты для создания кампаний с максимальной эффективностью. Чтобы выполнить более сложные операции, см. оставшуюся часть этого руководства, где демонстрируется более общий подход с использованием mutate .

Получение кампаний с максимальной эффективностью

Кампании с максимальной эффективностью доступны через коллекцию performanceMaxCampaigns объекта AdsApp . Вы можете получить их как обычно:

const campaignName = "My Performance Max campaign";

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

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

В отличие от некоторых других типов кампаний, кампании с максимальной эффективностью не имеют групп объявлений или объектов объявлений, которые вы можете видеть; все, что связано с этими концепциями для других кампаний, обрабатывается автоматически на основе установленных вами групп активов.

Активы и группы активов

В объявлениях кампаний с максимальной эффективностью используются такие ресурсы , как видео, изображения, заголовки и описания, предоставленные вами или созданные автоматически. Полный обзор необходимых типов ресурсов можно найти в руководстве по объектам Google Ads API с максимальной эффективностью .

Объекты кампаний с максимальной эффективностью объединяются в группу объектов, и в каждой кампании с максимальной эффективностью должна быть хотя бы одна группа объектов. Вы не можете создавать эти группы активов непосредственно в скриптах, но можете добавлять и удалять ресурсы из существующей группы активов.

Добавить актив в группу активов

Сначала создайте актив:

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 группы активов, чтобы удалить актив из группы активов:

// 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);