使用 AdsApp 的效果最大化广告系列

Google Ads 脚本可让您对效果最大化广告系列进行一些管理 广告系列。您可以使用 脚本来检索效果最大化广告系列、管理素材资源组,并运行 报告;但是,您无法使用脚本来制作效果最大化广告系列。接收者 执行更高级的操作,请参阅本指南的其余部分, 演示了使用 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.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);