效果最大化广告系列

您可以使用 Google Ads 脚本对效果最大化广告系列进行一些管理。您可以使用脚本检索效果最大化广告系列、管理素材资源组以及生成报告;不过,您无法使用脚本制作效果最大化广告系列。

检索效果最大化广告系列

效果最大化广告系列可通过 AdsApp 对象的 performanceMaxCampaigns 集合获得。您可以照常检索它们:

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.typeasset.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);

报告

效果最大化广告系列随其他广告系列类型一起报告在 campaign 资源中。首先,您可以使用如下代码:

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

请勿选择任何 ad_group 字段,因为效果最大化广告系列没有任何广告组,因此不会返回任何内容。此外,asset_group 不可细分。如需详细了解报告,请参阅我们的报告指南

您还可以直接为素材资源组生成报告。如需详细了解如何实现此操作,请参阅有关该主题的 Google Ads API 指南。您可以采取其中显示的任何查询,并通过 Google Ads 脚本中的 AdsApp.search 方法运行该查询,以获取相同的结果。