广告系列草稿和实验

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

请注意,系统会针对广告系列草稿进行广告政策检查,就像检查基本广告系列一样。如果广告系列草稿中包含违反政策的广告,您将无法运行实验。

执行草稿

配置广告系列草稿后,您可以执行以下任一操作:

  1. 如果您不想使用这些更改,只需移除草稿即可。 移除草稿的操作无法撤消,但您仍可以在 Google Ads 界面“草稿”标签页中的所有草稿下查看该草稿。

    draft.remove();
    
  2. 如果您决定保留您在草稿中所做的更改,可以继续操作并应用这些更改:

    draft.startApplying();
    

    此方法会开始将更新应用到基本广告系列,因此草稿在 Google Ads 界面中的状态将是 正在应用...。不过,该方法不会在此过程完成时通知您。

  3. 如果您希望先测试您的更改,可以使用草稿创建实验。

实验

创建实验

experiment 与草稿类似,也是基于基本广告系列创建的。您可以使用 ExperimentBuilder 创建 experiment。系统会自动创建一个包含两个“实验组”的实验,分别代表实验的不同部分。其中一组(称为“对照组”)将包含基准广告系列,另一组(称为“实验组”)包含一个新的广告系列草稿,在安排实验之前,您需要按照上述草稿中的步骤对其进行自定义。

构建实验时,请务必在构建器中设置以下所有项:

withCampaign
实验所依据的广告系列。
withTrafficSplitPercent
有多少流量将分配给实验组。例如,如果 50%,请指定 50
withStartDatewithEndDate
指定广告系列的开始日期和结束日期。请以 YYYYMMdd 格式指定。
withType
SEARCH_CUSTOMDISPLAY_CUSTOM,具体取决于您所使用的网络。
withSuffix
指定将在创建实验组广告系列时添加到其名称中的后缀。
withGoals
指定此实验的目标。这只是提醒自己 创建该受众群体时的目标是什么较好的默认值是 [{metric: 'CLICKS', direction: 'INCREASE'}]

流量分配百分比决定了将展示实验广告系列(而非基本广告系列)中的广告的比例。因此,每个基准广告系列一次只能有一个正在运行的实验。

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
  • status
  • 开始日期
  • 结束日期
  • 预算
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();
    
  • 如果您对实验结果感到满意,则有以下两种选择:

    1. 您可以开始应用更改,就像草稿一样,系统不会在流程完成后通知您。

      experiment.startApplying();
      
    2. 您可以将实验广告系列设置为独立、完全运作的广告系列,而不会影响基准广告系列。此过程称为升级,会立即完成并需要设置新预算。

      const budget = AdsApp.budgets()
          .withCondition(`campaign_budget.id = ${budgetId}`)
          .get()
          .next();
      
      experiment.graduate(budget);
      

      新广告系列无法再与基本广告系列共享预算,因此需要设置新预算。与普通广告系列一样,升级后的广告系列的所有字段均可修改,并可用作更多草稿和实验的基本广告系列。

其他注意事项

基础实体

Google Ads 脚本中引入了草稿和实验功能,还引入了基本实体的概念。草稿和实验广告系列及其中的广告组与其原始的基本广告系列不同,因此 CampaignAdGroup 现在拥有访问其基本广告系列和广告组的方法: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.

此操作将在预览模式下失败,因为它无法立即访问广告系列草稿。

同样,在预览模式下创建实验并立即尝试提取其广告系列草稿也会失败,因为草稿实际上并未创建。

因此,请在运行脚本列表后查看这些脚本列表下方的日志,并仅在您认为导致预览失败的原因时才继续处理预览模式失败的脚本。