常见问题

这里汇总了 AdWords 脚本论坛上提出的最常见问题。

常见的 JavaScript 错误

脚本运行失败,提示为“无法找到函数:FUNCTION_NAME”

这通常是因为脚本中的函数名称拼写错误。 1. 请检查函数名称是否拼写正确,并且大小写正确;例如,AdWordsApp.keywordz() 会导致出错,因为 keywordzAdWordsApp 类中不是一个有效函数。 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 的任何统计信息

在运行报告或调用统计信息时,您可能会遇到的一个常见错误是,无法获得有关某个特定实体或日期范围的数据。这种情况下,您可以尝试以下几项操作:

  1. 检查您要提取统计信息或运行报告的日期范围。
  2. 确定您请求的列/维度正确无误。报告参考页列出了所有受支持的报告及其各列。如果您需要了解界面中的列与 API 报告中各列的对应关系,请参阅我们的报告界面指南
  3. 如果为 MCC 脚本提取帐户级统计信息,而该脚本管理着多个采用不同币种的帐户,则您将获得以 MCC 帐户所用币种表示的费用数据。
  4. AdWords 可能还没有您要寻找的数据。请参阅我们的数据新鲜程度指南了解详情。

在请求报告中的“X”列时出错

在修改现有报告脚本以添加新的列时,可能会出现这个错误。导致此错误的几个常见原因如下:

  1. 该报告类型可能不提供您尝试访问的列。请查阅我们的报告参考页,看看是不是这种情况。
  2. 列名称会区分大小写,请务必与报告参考页中显示的列名称一致。例如,在请求点击次数统计信息时,应该使用“Clicks”作为列名称:“clicks”、“click”和“CLICK”均为无效名称。
  3. 检查您尝试请求的列最近是否已经在新的 API 版本中被弃用,或者是一个在最新 API 版本中引入的新列。报告参考页中显示的列始终是针对最新的 API 版本。不过,由于以下任一原因,您的代码所访问的报告可能并不是最新版本:

    1. AdWords 脚本可能还不支持最近发布的 API 报告版本。我们会定期在脚本论坛上发布新功能,请您及时查看这些通告,了解新的报告版本从何时开始受到支持。
    2. 您的代码可能在调用某个特定的报告版本,如报告指南中所述。您可能需要更改版本号,以支持您试图访问的列。
  4. 您应该限制在报告中请求的细分列的数量。您所请求的每个细分列都会导致报告中的行数成倍增加。您请求的细分列越多,该请求就越有可能因为发生错误而失败。我们建议将细分列的数量限制在 7 个以内。

  5. 报告中的一些列可能与其他列不兼容。这种情况下,请查看报告参考文档了解更多详情。

功能请求

“X”功能是否可用?

请查看支持的实体列表

“X”功能何时可用?

我们尽量优先提供最常被请求的功能。如果您希望看到某个功能,请按照以下步骤操作:

  1. 首先,通过查看支持的实体列表,确定该功能在 AdWords 脚本中是否受支持。
  2. 如果不受支持,搜索 AdWords 脚本论坛,查看先前是否已有用户请求该功能。如果是,顶相关帖子,或发表评论(如果您希望提供更多详细信息,比如某种使用场景)。
  3. 如果此功能尚未被请求,则发出功能请求,方法是在 AdWords 脚本论坛上发布一个新帖。务必提供一个可由该功能来解决的使用场景。尽可能提供一个指向介绍该功能的帮助中心指南或 AdWords API 博文/指南的链接。这有助于其他开发者顶起功能请求。我们根据热门程度来确定功能请求的优先次序。
  4. 将帖子标签设为“功能请求”,以方便我们(以及用户)快速查看功能请求。

我如何使用“X”功能?

请参阅我们的代码段解决方案,查看有关如何使用特定功能的示例。如果没有找到合适的代码段,请随时在论坛上提出请求。

发送以下问题的反馈:

此网页
AdWords Scripts
AdWords Scripts
需要帮助?请访问我们的支持页面