Google Ads 脚本支持 广告系列草稿和实验,这些功能用于 准备和测试对搜索广告系列和展示广告系列所做的更改。
本指南介绍了在脚本中使用草稿和实验的基本工作流程。
草稿
草稿是现有广告系列的克隆版本,不会投放自己的广告,但可用于暂存更改,而无需修改原始广告系列。然后,可以将暂存的更改应用于基准广告系列。
创建草稿
草稿是使用 DraftBuilder
并提供唯一名称从现有基准广告系列创建的。基准广告系列必须是搜索广告系列、将展示广告网络也纳入投放范围的搜索网络广告系列或展示广告系列(不包括展示广告网络的应用广告系列),并且不得使用共享预算。
const campaign = AdsApp.campaigns()
.withCondition(`campaign.name = "${campaignName}"`)
.get()
.next();
const draftBuilder = campaign.newDraftBuilder()
.withName("INSERT_DRAFT_NAME_HERE")
.build();
const draft = draftBuilder.getResult();
DraftBuilder.build() 会返回 DraftOperation,这是脚本中的典型操作
。如需了解详情,请参阅我们的构建器指南。
draft 由其基准广告系列 ID 和草稿 ID 的组合唯一标识。如需了解详情,请参阅 DraftSelector.withIds()。
预配广告系列草稿
draft 对象关联了基准广告系列和广告系列草稿。如需暂存对基准广告系列的更新,您可以通过广告系列草稿传播更改。
与任何其他广告系列一样,广告系列草稿也有一些方法来获取和设置其各种属性,例如条件、广告组、出价和广告。
const draftCampaign = draft.getDraftCampaign();
draftCampaign.setAdRotationType("CONVERSION_OPTIMIZE");
draftCampaign.createNegativeKeyword("shoes");
系统会像对基准广告系列一样对广告系列草稿执行广告政策检查。您无法从包含违反政策的广告的广告系列草稿运行实验。
执行草稿
预配广告系列草稿后,您可以执行以下操作之一:
如果您不想使用这些更改,只需移除草稿即可。 移除草稿是不可逆的操作,但您仍然可以在 Google Ads 界面“草稿”标签页的所有草稿 下查看草稿。
draft.remove();如果您决定保留在草稿中所做的更改,可以继续应用这些更改:
draft.startApplying();此方法会启动将更新应用于基准广告系列的过程,因此草稿在 Google Ads 界面中的状态将为正在应用… 。不过,此方法不会在流程完成时通知您。
如果您想先测试一下所做的更改,可以使用草稿来创建实验。
实验
实验会与原始广告系列并行运行可自定义的广告系列,并向指定百分比的流量展示广告。根据实验结果,您可以将更改应用于原始广告系列,将实验分支到独立广告系列,或放弃实验广告系列。
创建实验
experiment 与草稿类似,也是从基准广告系列创建的。您可以使用 ExperimentBuilder 创建 experiment。这会自动创建一个包含两个“实验组”的实验,这两个实验组代表实验的不同部分。一个实验组(称为对照组)将包含基准广告系列,另一个实验组(称为实验组)将包含一个新的广告系列草稿,您将在安排实验之前自定义该草稿(按照前面显示的草稿步骤)。
构建实验时,请务必在构建器中设置以下所有内容:
withCampaign- 您希望实验基于的广告系列。
withTrafficSplitPercent- 将有多少流量进入实验组。对于 50%,请指定
50。 withStartDate和withEndDate- 指定广告系列的开始日期和结束日期。以
YYYYMMdd格式指定。 withType- `SEARCH_CUSTOM` 或 `DISPLAY_CUSTOM`,具体取决于您使用的广告网络。
withSuffix- 指定在创建实验组广告系列时将添加到其名称中的后缀。
withGoals- 指定此实验的目标。这只是提醒您在创建实验时设定的目标。一个不错的默认值是
[{metric: 'CLICKS', direction: 'INCREASE'}]。
SEARCH_CUSTOMDISPLAY_CUSTOM流量分配百分比决定了将向多少流量展示实验广告系列中的广告,而不是基准广告系列中的广告。因此,每个基准广告系列一次只能运行一个实验。
const experiment = AdsApp.newExperimentBuilder()
.withCampaign(campaign)
.withTrafficSplitPercent(50)
.withStartDate("20230501")
.withEndDate("20230601")
.withType("SEARCH_CUSTOM")
.withSuffix("experiment")
.withGoals([{metric: 'CLICKS', direction: 'INCREASE'}])
.build();
// The experimentCampaign represents the customizeable draft.
const experimentCampaign = experiment.getExperimentCampaign();
与草稿不同,实验由单个 ID 唯一标识。如需了解详情,请参阅
ExperimentSelector.withIds()。
预配实验广告系列
与 draft 类似,experiment 本身不是广告系列。相反,它关联了基准广告系列、草稿和实验广告系列。实验广告系列的字段是可修改的,但以下字段除外:
- name
- 状态
- 开始日期
- 结束日期
- 预算
const experimentCampaign = experiment.getExperimentCampaign();
// Will succeed.
experimentCampaign.setAdRotationType("ROTATE_FOREVER");
experimentCampaign.createNegativeKeyword("sneakers");
// Will fail.
experimentCampaign.setName("INSERT_EXPERIMENT_NAME_HERE");
您可以更改实验的名称、开始日期和结束日期,然后这些更改将传播到实验广告系列。
// Will succeed.
experiment.setName("INSERT_EXPERIMENT_NAME_HERE");
// Will succeed if date is acceptable.
const date = "20220601";
experiment.setStartDate(date);
如需开始实验,请调用 experiment.startScheduling()。这是一个异步过程,因为它必须从基准广告系列复制所有设置。
实验结束后
实验完成后,您有几个选项。我们建议您让实验完全结束,这样它就会停止投放广告,但您仍然可以与其互动。已完成 的实验仍然可以移除、应用或升级,并且其广告系列的效果统计信息仍然可以访问。
experiment.finish();
const stats = experimentCampaign.getStatsFor("INSERT_TIME_PERIOD_HERE");
如果您对实验的统计信息不满意,可以移除实验,这也会移除实验广告系列。移除实验是不可逆的操作,但您仍然可以在 Google Ads 界面“实验”标签页的所有实验 下查看实验。
experiment.remove();如果您对实验结果满意,可以选择以下两种方案之一:
您可以开始应用更改,与草稿一样,系统不会在流程完成时通知您。
experiment.startApplying();您可以将实验广告系列确立为独立的、完全运行的广告系列,而不会影响基准广告系列。此 过程称为 升级, 会立即完成,并且需要设置新的预算。
const budget = AdsApp.budgets() .withCondition(`campaign_budget.id = ${budgetId}`) .get() .next(); experiment.graduate(budget);新广告系列无法再与基准广告系列共享预算,因此需要新的预算。升级后的广告系列与普通广告系列一样,所有字段都是可修改的,并且可以作为更多草稿和实验的基准广告系列。
其他注意事项
基础实体
在 Google Ads 脚本中引入草稿和实验也引入了基础实体的概念。草稿和实验广告系列及其中的广告组与原始基准广告系列不同,这就是为什么
Campaign 和 AdGroup 现在具有访问其基准
广告系列和广告组的方法:getBaseCampaign() 和 getBaseAdGroup()。
如果由基准广告系列或广告组调用,这些方法会返回调用实体。广告系列和广告组中的实体(例如关键字和广告)也已获得此类方法。
为了帮助跟踪基础实体,广告系列已获得
isBaseCampaign()、isDraftCampaign()和
isExperimentCampaign()方法。
借助新的 Campaign.draftCampaigns() 和
Campaign.experimentCampaigns() 方法,您可以访问所有以调用广告系列作为基准广告系列的草稿和
实验广告系列。
不过,您无法使用
CampaignSelector.withCondition()选择广告系列草稿;请改用AdsApp.drafts()。
错误处理
以下涉及草稿和实验的方法会在脚本运行时继续执行,但可能会异步失败:
Draft.startApplying()Experiment.startApplying()Experiment.startScheduling()
您应等待检查这些操作是否成功。在成功完成 startApplying() 和 startScheduling() 后,Google Ads 界面会分别显示已应用 或有效 状态。如果失败,则会显示无法应用 或无法创建 ,让您点击查看错误。
某些方法也可能在预览阶段失败,但在运行后成功;例如,在创建草稿后:
const draftCampaign = draft.getDraftCampaign();
draftCampaign.createNegativeKeyword("shoes"); // Will fail in preview.
这在预览模式下会失败,因为它无法立即访问广告系列草稿。
同样,创建实验并立即尝试提取其广告系列草稿也会在预览模式下失败,因为草稿实际上并未创建。
因此,请在运行脚本后查看脚本列表下方的日志,并且仅当您认为失败的原因是预览模式的限制时,才继续运行在预览中失败的脚本。