这里汇总了 AdWords 脚本论坛上提出的最常见问题。
常见的 JavaScript 错误
脚本运行失败,提示为“无法找到函数:FUNCTION_NAME”
这通常是因为脚本中的函数名称拼写错误。
1. 请检查函数名称是否拼写正确,并且大小写正确;例如,AdWordsApp.keywordz()
会导致出错,因为 keywordz
在 AdWordsApp 类中不是一个有效函数。
AdWordsApp.Keywords()
也会出错,因为对于 keywords()
函数而言,这种大小写形式是不正确的。
2. 检查函数是否存在;例如,AdWordsApp.keywords().next()
会导致出错,因为 AdWordsApp.keywords() 返回的是 KeywordSelector,而 next()
是用于 KeywordIterators 的一种方法。正确的代码应该是 AdWordsApp.keywords().get().next()
。
脚本运行了,但没有完成任何操作
出现这个问题的最常见原因是,虽然函数执行了运算,但您并没有在 main()
方法中调用该函数。这种情况通常在您从我们的文档中复制粘贴代码段时发生。
编码方案 | 代码段 |
---|---|
版本 1(无效) |
function main() { // 没有调用 getAllCampaigns,所以此脚本未能完成任何操作。 } function getAllCampaigns() { // 默认情况下,AdWordsApp.campaigns() 将返回所有 // 未被移除的广告系列。 var campaignIterator = AdWordsApp.campaigns().get(); Logger.log('Total campaigns found : ' + campaignIterator.totalNumEntities()); while (campaignIterator.hasNext()) { var campaign = campaignIterator.next(); Logger.log(campaign.getName()); } } |
版本 2(无效) |
function main() { // 没有调用 getAllCampaigns,所以此脚本未能完成任何操作。 function getAllCampaigns() { // 默认情况下,AdWordsApp.campaigns() 将返回所有 // 未被移除的广告系列。 var campaignIterator = AdWordsApp.campaigns().get(); Logger.log('Total campaigns found : ' + campaignIterator.totalNumEntities()); while (campaignIterator.hasNext()) { var campaign = campaignIterator.next(); Logger.log(campaign.getName()); } } } |
版本 3(有效) |
function main() { getAllCampaigns(); } function getAllCampaigns() { // AdWordsApp.campaigns() will return all campaigns that are not removed // by default. var campaignIterator = AdWordsApp.campaigns().get(); Logger.log('Total campaigns found : ' + campaignIterator.totalNumEntities()); while (campaignIterator.hasNext()) { var campaign = campaignIterator.next(); Logger.log(campaign.getName()); } } |
在升级脚本时,出现“无法找到函数 getFinalUrl”错误
当您修改脚本以使用升级版网址时,就可能会出现这个错误。这种情况在您将对 ad.getDestinationUrl()
的调用替换为 ad.getFinalUrl()
时会发生。
getFinalUrl()
是 AdUrls 类的组成部分,因此您需要将代码更改为 ad.urls().getFinalUrl()
:
function main() {
// Incorrect snippet. getFinalUrl is not a member of the Ad class.
var ad = AdWordsApp.ads().get().next();
var url = ad.getFinalUrl();
// Correct snippet.
var ad = AdWordsApp.ads().get().next();
var url = ad.urls().getFinalUrl();
}
我没有获得关于 X 的任何统计信息
在运行报告或调用统计信息时,您可能会遇到的一个常见错误是,无法获得有关某个特定实体或日期范围的数据。这种情况下,您可以尝试以下几项操作:
- 检查您要提取统计信息或运行报告的日期范围。
- 确定您请求的列/维度正确无误。报告参考页列出了所有受支持的报告及其各列。如果您需要了解界面中的列与 API 报告中各列的对应关系,请参阅我们的报告界面指南。
- 如果为 MCC 脚本提取帐户级统计信息,而该脚本管理着多个采用不同币种的帐户,则您将获得以 MCC 帐户所用币种表示的费用数据。
- AdWords 可能还没有您要寻找的数据。请参阅我们的数据新鲜程度指南了解详情。
在请求报告中的“X”列时出错
在修改现有报告脚本以添加新的列时,可能会出现这个错误。导致此错误的几个常见原因如下:
- 该报告类型可能不提供您尝试访问的列。请查阅我们的报告参考页,看看是不是这种情况。
- 列名称会区分大小写,请务必与报告参考页中显示的列名称一致。例如,在请求点击次数统计信息时,应该使用“Clicks”作为列名称:“clicks”、“click”和“CLICK”均为无效名称。
-
检查您尝试请求的列最近是否已经在新的 API 版本中被弃用,或者是一个在最新 API 版本中引入的新列。报告参考页中显示的列始终是针对最新的 API 版本。不过,由于以下任一原因,您的代码所访问的报告可能并不是最新版本:
- AdWords 脚本可能还不支持最近发布的 API 报告版本。我们会定期在脚本论坛上发布新功能,请您及时查看这些通告,了解新的报告版本从何时开始受到支持。
- 您的代码可能在调用某个特定的报告版本,如报告指南中所述。您可能需要更改版本号,以支持您试图访问的列。
-
您应该限制在报告中请求的细分列的数量。您所请求的每个细分列都会导致报告中的行数成倍增加。您请求的细分列越多,该请求就越有可能因为发生错误而失败。我们建议将细分列的数量限制在 7 个以内。
- 报告中的一些列可能与其他列不兼容。这种情况下,请查看报告参考文档了解更多详情。
功能请求
“X”功能是否可用?
请查看支持的实体列表。
“X”功能何时可用?
我们尽量优先提供最常被请求的功能。如果您希望看到某个功能,请按照以下步骤操作:
- 首先,通过查看支持的实体列表,确定该功能在 AdWords 脚本中是否受支持。
- 如果不受支持,搜索 AdWords 脚本论坛,查看先前是否已有用户请求该功能。如果是,顶相关帖子,或发表评论(如果您希望提供更多详细信息,比如某种使用场景)。
- 如果此功能尚未被请求,则发出功能请求,方法是在 AdWords 脚本论坛上发布一个新帖。务必提供一个可由该功能来解决的使用场景。尽可能提供一个指向介绍该功能的帮助中心指南或 AdWords API 博文/指南的链接。这有助于其他开发者顶起功能请求。我们根据热门程度来确定功能请求的优先次序。
- 将帖子标签设为“功能请求”,以方便我们(以及用户)快速查看功能请求。