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");
請注意,系統會檢查廣告活動草稿的廣告政策,就像檢查基礎廣告活動時一樣。如果廣告活動草稿包含違反政策的廣告,您將無法執行實驗。
執行草稿
佈建廣告活動草稿後,您可以執行下列其中一項操作:
如果不想使用變更,可以直接移除草稿。 草稿一經移除即無法復原,但仍可在 Google Ads UI 中「草稿」分頁的「所有草稿」下查看。
draft.remove();
如果您決定保留草稿中所做的變更,可以繼續操作並套用這些變更:
draft.startApplying();
這個方法會開始將更新套用至基礎廣告活動,因此草稿在 Google Ads UI 中會顯示為「Applying...」狀態。但是,這個方法不會在程序完成時通知您。
如果您希望先測試變更內容,可使用草稿來建立實驗。
實驗
建立實驗
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
本身並不是廣告活動。而是基礎廣告活動、草稿和實驗廣告活動。實驗廣告活動的欄位可以修改,但有以下例外:
- 名稱
- 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();
如果實驗結果感到滿意,您有兩種做法:
您可以開始套用變更,就像草稿一樣,系統不會在程序完成後通知您。
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 UI 會分別顯示「已套用」或「有效」狀態。失敗時也會顯示「Unable to apply」或「Unable to create」,方便您點選查看錯誤。
也可能是部分方法在預覽階段中失敗,但在執行後成功,例如在建立草稿後:
const draftCampaign = draft.getDraftCampaign();
draftCampaign.createNegativeKeyword("shoes"); // Will fail in preview.
這會在預覽模式中失敗,因為無法立即存取廣告活動草稿。
同樣地,由於建立草稿並不會建立草稿,因此建立實驗並立即嘗試擷取其草稿廣告活動時,也會失敗。
因此,請在執行指令碼清單後檢查記錄檔清單,因此,只有在您認為原因起因於預覽模式的限制時,才執行預覽失敗的指令碼。