今天HubSpot One將通過一個實例來介紹Script用法。這個實例是最近筆者在工作中剛用到的。一個客戶是一家有著全球網絡的航空公司,其穀歌推廣有一個MCC(My Client Center)賬戶,賬戶下有九十多個國家的Google Ads賬戶,每個賬戶下又有數十個推廣計劃。上週恰巧發生了一家小型飛機墜毀的新聞,在短時間內,如何為每個賬戶的每個推廣計劃添加否定關鍵字呢?這就要用到Google Ads Script。
新建Google Ads Script
你可以在賬戶或者MCC層級點擊右上方的TOOLS按鈕,然後在BULK ACTIONS下面找到Script。不同層級下面可用的對像是不同的。在這個例子裡我們是在MCC層級。而且您需要對每個賬戶具有權限可以添加否詞。 Google Ads也會要求你對腳本進行授權,因為你在登出的狀態下腳本仍然可以正在運行。
建立Google Sheet存放否定關鍵字
我們先建立一個新的Google Sheet,然後將否詞列表放入A欄。再點擊右上角綠色的Share按鈕,如下圖,複製好鏈接先放著。
接下來我們會在Google Ads Script中調用這個Google Sheet。
調用Google Sheet並獲取否定關鍵字列表
如下圖代碼,我們可以通過我們剛才保存的Google Sheet的URL獲取Google Sheet對象,然後將每一個否詞添加到這個negativeKWs的隊列並返回。代碼比較直觀,註釋也比較全,不多做解釋。
建立MCC對象並對每個賬號進行操作
我們接下來寫一個主函數,這個在HubSpot One五年前的文章《AdWords的那些鮮為人知的高級技巧》中有所介紹。我們可以在調入了否定關鍵字之後再新建一個賬戶選擇器accountSelector 。這個賬戶選擇器將會讓我們可以並向執行對每個賬戶的操作。
這裡需要注意的是我們拿到的否定關鍵字列表要轉換為字符串,這樣才能匹配函數executeInParallel的第三個輸入參數格式。
另外,還要注意的是MccApp在2018年11月已經被重命名為AdsManagerApp 。不過現在兩者貌似都可以使用。要懷舊,那就用MccApp吧。
為賬戶中每個推廣計劃添加否定關鍵字
這個函數addNegativeKeywordToCampaign需要有一個傳入參數,那就是我們剛才字符串化後的negativeKWs ,也就是傳入後的nKWs 。我們第一步就先把它還原為對象,一個否定關鍵字列表,我們依然用negativeKWs來命名。
接下來我們會遍歷該賬戶的各個推廣計劃。考慮到效率,我們可以對目標推廣計劃進行過濾。比如僅對開啟的推廣計劃進行操作。這就會用到條件選擇器.withCondition 。
通過循環,我們可以為每個推廣計劃加上否定關鍵字。
總結一下
限於篇幅,我們要詳盡介紹Google Ads Script不太現實。僅希望你可以對此產生興趣。腳本的語法和JavaScript完全一致,有編程基礎的讀者會很快掌握。不過谷歌並沒有提供強大的在線調試環境,在編寫腳本的過程中建議你多使用Logger.log()來逐步確認。然後通過Preview(預覽)功能來檢查結果和預期是否有出入。
你可以參考谷歌官方的參考文檔,還有一些優秀的教程。
最後,完整的代碼如下。
function main() {
//從Google Sheet獲取否詞列表
var negativeKWs = getNegativeKWs();
//獲取MCC下所有賬戶
var accountSelector = MccApp.accounts()
.withLimit(500);
//對各賬戶添加否詞,否詞需先轉換成JSON字符串
accountSelector.executeInParallel(“addNegativeKeywordToCampaign”,null,JSON.stringify(negativeKWs));
}
function addNegativeKeywordToCampaign(nKWs) {
//先將否詞的JSON字符串轉換回對象
var negativeKWs = JSON.parse(nKWs);
//選擇所有推廣計劃,如需過濾請用withCondition,如僅對啟用的推廣計劃操作
var campaignIterator = AdsApp.campaigns()
//.withCondition(“Status = ENABLED”)
.get();
//循環為該賬號的每個推廣計劃添加否詞
if (campaignIterator.hasNext()) {
var campaign = campaignIterator.next();
for(i=0;i<negativeKWs.length;i++) {
campaign.createNegativeKeyword(negativeKWs[i]);
}
}
}
function getNegativeKWs() {
//定義否詞序列
var negativeKWs = [];
//定義Google Sheet鏈接
var SPREADSHEET_URL = ‘https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxxxxxx/’;
//打開Google Sheet並打開第一個表
var ss = SpreadsheetApp.openByUrl(SPREADSHEET_URL).getSheetByName(‘Sheet1’);
//獲取最後一行
var lastRow = ss.getLastRow();
//將否詞序列一一讀取
for (i=1;i<=lastRow;i++){
negativeKWs.push(ss.getRange(i,1).getValue());
}
return negativeKWs;
}