Google Ads Script实例教程 – 从Google Sheets添加否定关键词
Google Ads Script(谷歌广告脚本),旧称Google AdWords Script,是谷歌搜索推广中最高级的技巧。对于管理和优化大型推广账户的数字营销人员来说,不会用Script来进行大批量操作会让工作量几何级增加。而Google Ads Script正是解决大批量的复杂逻辑的且是重复性的工作的最佳选择。

今天极诣将通过一个实例来介绍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对象并对每个账号进行操作
我们接下来写一个主函数,这个在极诣五年前的文章《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;
}