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");
系統會對草稿廣告活動執行廣告政策檢查,就像對基本廣告活動執行的程序一樣。如果草稿廣告活動含有違反政策的廣告,您就無法執行實驗。
執行草稿
預先佈建草稿廣告活動後,您可以執行下列任一操作:
如果不想使用變更,只要移除草稿即可。 移除草稿後就無法復原,但您仍可在 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'}]
。
流量分配百分比會決定要顯示實驗廣告活動的廣告,還是基礎廣告活動的廣告。因此,每個基準廣告活動一次只能執行一項實驗。
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();
如果對實驗結果感到滿意,可以選擇下列做法:
您可以開始套用變更,與草稿相同,程序完成時不會收到通知。
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.
在預覽模式中,這項作業會失敗,因為系統無法立即存取草稿廣告活動。
同樣地,在預覽模式下建立實驗後,如果立即嘗試擷取實驗的草稿廣告活動,系統會傳回失敗結果,因為草稿並未實際建立。
因此,請在執行指令碼後檢查指令碼清單下方的記錄,只有在您認為失敗原因是因為預覽模式的限制時,才繼續處理預覽失敗的指令碼。