假如销售一些对温度、风速、降水量等天气状况敏感的产品,要是能根据天气条件调整广告出价,那广告效果可能会有比较明显的提升。刚好谷歌官方有一个Bid by Weather脚本(现在官方文档页面丢失)能实现这个目的:例如你可以设置,当美国加州洛杉矶温度高于30度时,洛杉矶地区的CPC出价提高1.5倍;或是,当洛杉矶温度高于30度且降雨量大于10mm/h时,整个加州的CPC出价降低0.5倍。
Bid by Weather脚本需要搭配谷歌在线表格、OpenWeather API一起使用。
适用范围:搜索广告、购物广告、展示广告等地理位置出价调整可生效的非智能出价广告模式。详见出价调整一文的说明。
在线表格
将这个链接中的表格复制到你的谷歌文档中。
表格中有4张工作表,分别是说明书工作表、广告系列工作表、天气数据工作表、天气地理位置工作表。(注意:代码只用到后面3张表。但是不要删除说明书工作表,且后面三张表的先后顺序不能移动。)
1.广告系列工作表(Campaigns)
注:规则是在广告系列表格从上往下执行的,凡是同一个广告系列中重复地点并且重复天气条件的规则,下方的规则会覆盖上方的规则。
这张工作表的作用是将地理位置、天气、应用范围等条件与广告系列相匹配。
Campaign Name 列填广告系列的名称,与Google Ads中的广告系列名称要完全一致。
Weather Location 列的值取自天气地理位置数据表中Weather Location列;
注意:OpeanWeather网站建议不要使用大型位置或国家/地区,因为它提供的数据不是大型位置的天气数据的聚合数据或平均值,而是所选位置/国家/地区的领土中心点的天气数据。——比如位置填 California,US ,那整个加州的出价只会按照加州地理上的中心点的天气来判定。eg,你希望广告只在晴天出价、下雨则停止出价。加州中心地区天气是晴天,而加州其它地区都在下雨,那么你的脚本便会设置整个加州都参与竞价——与咱们的意愿完全违背。更好的填写方式是精确到县一级,例如Orange County,CA,US ,这样精准度要高许多。
Weather Condition 列的值取自Weather Condition工作表。一个地理位置会同时有好几行规则,分别是对应不同天气条件下的出价调整。然后脚本运行时,检测到当前是什么天气,就匹配哪一条出价规则。
Bid Modifier 列是出价调整系数,自行设定即可。
Apply Modifler To 列是对广告系列生效的规则。“Matching Geo Targets”指的是当前行的天气规则只对当前广告系列中的”Weather Location”的位置生效;“All Geo Targets”指的是当前行的天气规则对当前广告系列的所有位置生效。
用上图举个例子:
假如Test Campaign 1 的广告投放范围是全美国,那么第1行的规则代表当Boston的天气是晴天时,Boston地区的出价*1.3;【仅针对Boston地区,但是Boston地区的具体位置还要结合天气地点数据表格中的指示】
假如Test Campaign 3 的广告投放范围是全美国,那么第6行的规则代表当Florida的天气是晴天时,全美国的出价都*1.3;【针对全美国】
Enabled 列可以控制所在行的规则是否生效。
Weather Location 列的地理位置和Bid Modfier列的出价调整值会在脚本运行时自动添加到谷歌广告系列的地理位置界面。
2.天气数据表格(Weather Condition)
这张工作表的作用是定义不同的天气条件。比如上图:咱们将温度在65-80之间,3小时降水量小于1,风速低于5的天气条件定义为Sunny。
所有4列全部要保留,但是可以留空。温度是华氏度(脚本运行日志中api返回的值是开尔文温度);降水量是毫米/小时(与脚本运行日志中api返回值单位一致);风速是英里/小时(脚本运行日志中api返回值是米/秒)。
Condition Name 列的值需要填入到广告系列工作表中的Weather Condition列。Sunny/Rainy只是一个名称,可以随便换其他任何名称,主要是由后面3列参数确定的。比如我的设置:
***Precipition降水量不是每个api返回值中都有这个字段的,只有当返回值的天气为rainy时才会有。
【根据我查看代码运行日志后得出的结论:最好将代码里的precipition降水量替换为1小时(将代码中的“3h”改为“1h”即可),则表格里也填1小时的降水量,因为很多时候api返回数据中没有3小时的数据,只有1小时的数据。代码设置为每小时运行一次,这样就能使cpc出价保持最新。】
降水量的参考值:
3.天气地理位置映射表格(Geo Target Mapping)
这张工作表的作用是绑定实际地理位置与Ads中的地理Code的对应关系。
Weather Location 这列的值用于在OpenWeather API中获取该值(地区)的天气,所以必须要在OpenWeather网站上能查到对应地理位置才可以,否则脚本运行时会报错。
Geo Target Code 来自谷歌官方Geo Targets文档,Google Ads中的地理位置也采用了相同的编码,所以可匹配Ads中的地理位置。
注:谷歌Geo Targets中的地理位置与OpenWeather网站上可查询的地理位置有很多是对应不上的,所以需要复制谷歌Geo文档中的地址到OpenWeather网站上进行手工查询筛选,删除或修改在OpenWeather中查询不到的地理位置。
以上图的逻辑关系举例说明:
①第1行,Boston的位置只对应一个,那么当在广告系列工作表中选择“Matching Geo Targets”时,广告系列表格中的Boston的规则只会应用到1018127这一个地方。(注:波士顿在谷歌的地理位置代码里可能分成好几个区,所以1018127明确告诉了谷歌只将规则应用到其中的一个区)
②第2-4行,Connecticut对应3个geo代码,那么当在广告系列工作表中选择“Matching Geo Targets”时,广告系列表格中的Connecticut的规则只会应用到这三个地区,Connecticut州中的其他城市不会应用该规则。
③第5行,Florida对应的这个geo是州级的代码,那么当广告系列表格中Apply Modifler To 列的值是“Matching Geo Targets”时, Florida的规则会应用到21142这个州。
OpenWeather API
脚本需要使用Openweather API查询天气数据,它家有免费API供咱们使用。注册网址:https://openweathermap.org/appid
注册后在导航栏的 My API keys
界面便可看到API,使用默认API或者自己重新生成一个都行。
脚本运行后会有运行日志,可在这个网址查看日志中的天气数据解析:
https://openweathermap.org/weather-data
脚本
原官方文档的脚本代码是有bug的,并不能正常运行。以下提供的代码是我找人修改后可以正常运行的版本。
注意,你需要将脚本中的两处值替换你自己的。分别是OpenWeather API key XXX和谷歌在线表格URL XXX。
代码如下:
部署代码到Google Ads
在Ads的 工具 - 批量操作 - 脚本
界面点击“+”新建脚本。
首先,给脚本命个名;然后,删除脚本中自动生成的 function main{ } 空白语句,将文档代码全部粘贴到框内,修改顶部的API和Google Sheet链接(注意:Google Sheet链接需要粘贴第一页说明sheet页的URL)。 接下来,保存、运行即可。
运行时可以先选择预览一遍看结果,检查是否与咱们在线表格中的设定一致。假如报错,可以查看日志,大概率原因会是Geo地址在OpenWeather API中查询不到…
运行成功后,可以会显示它修改了哪些广告系列。咱们再到对应 广告系列 - 受众群体、关键字和内容 - 地理位置
界面确认是否添加了地理位置和出价调整。
出价调价对已启用及未启用的广告系列均有效;要是对某些广告系列不起效,请尝试修改广告系列名称(比如缩短长度,去除空格等)。
要是运行没问题,就可以在执行频率
一栏设置执行频率为每小时
。
最后提示:尽量不要在Campaigns表单中添加几千上万条,因为这个脚本需要API查询交互,执行速度挺慢。根据我的经验,5000行左右还ok,10多分钟运行完成。所以,最好是添加多个bid by weather脚本来执行不同广告系列的出价调整。