广告系列草稿和实验

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
  • 状态
  • 开始日期
  • 结束日期
  • 预算
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.

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

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

因此,请在运行脚本后检查脚本列表下方的日志,并且仅当您认为失败原因是由于预览模式的限制时,才继续运行在预览模式下失败的脚本。