廣告活動草稿和實驗

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 和草稿 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 本身並不是廣告活動。而是將基礎廣告活動、草稿和實驗廣告活動連結起來。實驗廣告活動的欄位可修改,但下列情況除外:

  • 名稱
  • 狀態
  • 開始日期
  • 結束日期
  • 預算
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.

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

同樣地,在預覽模式下建立實驗後,如果立即嘗試擷取實驗的草稿廣告活動,系統會傳回失敗結果,因為草稿並未實際建立。

因此,請在執行指令碼後檢查指令碼清單下方的記錄,只有在您認為失敗原因是因為預覽模式的限制時,才繼續處理預覽失敗的指令碼。