廣告活動草稿和實驗

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,這是 Script 中的一般作業。詳情請參閱建構工具指南

draft 可用唯一廣告活動 ID 和草稿 ID 的組合來識別。詳情請參閱 DraftSelector.withIds()

佈建廣告活動草稿

draft 物件與基礎廣告活動和廣告活動草稿有關。如要為基礎廣告活動分階段更新,請透過廣告活動草稿套用變更。

廣告活動草稿和一般廣告活動一樣,都可以取得並設定其各種屬性,例如條件、廣告群組、出價和廣告。

const draftCampaign = draft.getDraftCampaign();

draftCampaign.setAdRotationType("CONVERSION_OPTIMIZE");
draftCampaign.createNegativeKeyword("shoes");

請注意,系統會檢查廣告活動草稿的廣告政策,就像檢查基礎廣告活動時一樣。如果廣告活動草稿包含違反政策的廣告,您將無法執行實驗。

執行草稿

佈建廣告活動草稿後,您可以執行下列其中一項操作:

  1. 如果不想使用變更,可以直接移除草稿。 草稿一經移除即無法復原,但仍可在 Google Ads UI 中「草稿」分頁的「所有草稿」下查看。

    draft.remove();
    
  2. 如果您決定保留草稿中所做的變更,可以繼續操作並套用這些變更:

    draft.startApplying();
    

    這個方法會開始將更新套用至基礎廣告活動,因此草稿在 Google Ads UI 中會顯示為「Applying...」狀態。但是,這個方法不會在程序完成時通知您。

  3. 如果您希望先測試變更內容,可使用草稿來建立實驗。

實驗

建立實驗

experiment 與草稿類似,而且是以基礎廣告活動建立。您可以建立具有 ExperimentBuilderexperiment。系統會自動建立實驗,包含兩個「引數」代表實驗的不同部分。其中一個實驗組 (稱為「控制組」) 會包含基礎廣告活動,另一個則稱為「實驗組」,則包含一個新的廣告活動草稿,您必須按照上方草稿的步驟自訂,再排定實驗。

建立實驗時,請務必在建構工具中設定下列所有項目:

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 本身並不是廣告活動。而是基礎廣告活動、草稿和實驗廣告活動。實驗廣告活動的欄位可以修改,但有以下例外:

  • 名稱
  • 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 UI 中「實驗」分頁的「所有實驗」下方查看。

    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 UI 會分別顯示「已套用」或「有效」狀態。失敗時也會顯示「Unable to apply」或「Unable to create」,方便您點選查看錯誤。

也可能是部分方法在預覽階段中失敗,但在執行後成功,例如在建立草稿後:

const draftCampaign = draft.getDraftCampaign();
draftCampaign.createNegativeKeyword("shoes"); // Will fail in preview.

這會在預覽模式中失敗,因為無法立即存取廣告活動草稿。

同樣地,由於建立草稿並不會建立草稿,因此建立實驗並立即嘗試擷取其草稿廣告活動時,也會失敗。

因此,請在執行指令碼清單後檢查記錄檔清單,因此,只有在您認為原因起因於預覽模式的限制時,才執行預覽失敗的指令碼。