Google Ads 脚本可用于管理部分效果最大化广告系列。您可以使用脚本检索效果最大化广告系列、管理素材资源组和生成报告;不过,您无法使用脚本创建效果最大化广告系列。如需执行更高级的操作,请参阅本指南的其余部分,其中展示了使用 mutate
的更通用方法。
检索效果最大化广告系列
您可以通过 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.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);