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 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 會分別顯示「已套用」或「有效」狀態。並在失敗時指出「無法套用」或「無法建立」,讓您點選即可查看錯誤。
有些方法也可能在預覽階段失敗,但在執行後成功,例如在建立草稿後:
const draftCampaign = draft.getDraftCampaign();
draftCampaign.createNegativeKeyword("shoes"); // Will fail in preview.
這在預覽模式中會失敗,因為系統無法立即存取草稿廣告活動。
同樣地,建立實驗並立即嘗試擷取草稿廣告活動,在預覽模式下會失敗,因為草稿並未實際建立。
因此,請在執行指令碼後檢查指令碼清單下方的記錄,並且只有在您認為原因是預覽模式的限制時,才繼續執行在預覽中失敗的指令碼。