【问题标题】:Google Apps Script: strange "Missing ; before statement." errorGoogle Apps 脚本:奇怪的“缺少 ; before statement”。错误
【发布时间】:2013-07-12 09:32:04
【问题描述】:

我正在编写一个简单的脚本来废弃一些报告数字。我收到错误消息“Missing ; before statement.”,这似乎不是对手头问题的准确描述。

我尝试省略部分代码,但错误消息似乎相当随机。我怀疑我正在使用的某些类存在一些问题,但我没有想法。

这是我的代码:

function getStats() {
  var stats = {'id': '',
               'impressions': 0,
               'clicks': 0,
               'conversions': 0,
               'cpa': 0,
               'cost': 0},
      campaignIterator = AdWordsApp.campaigns().get(),
      campaign,
      campaignstats;

  Logger.log('Fetching stats for last 7 days.');

  while (campaignIterator.hasNext()) {
    var campaign = campaignIterator.next();
    var campaignstats = campaign.getStatsFor('LAST_7_DAYS');
    var stats['impressions'] = stats['impressions'] + campaignstats.getImpressions();
    var stats['clicks'] = stats['clicks'] + campaignstats.getClicks();
    var stats['conversions'] = stats['conversions'] + campaignstats.getConversions();
    var stats['cost'] = stats['cost'] + campaignstats.getCost();
  }

  var stats['cpa'] = stats['cost']/stats['conversion'];
}

function main() {
  getStats();
}

感谢您的帮助!

【问题讨论】:

  • 通过 linter 运行您的代码:例如jshint.com
  • 错误在哪一行弹出?
  • 不幸的是,没有提到这条线。这是一个功能有限的浏览器内 IDE。

标签: javascript google-apps-script google-ads-api


【解决方案1】:

while 循环内的每一行及其后面的语句中删除var 语句。

除了所有这些变量都已经定义的事实(尽管重新声明同一个变量不会导致错误)之外,您还会遇到语法错误,因为您不能在变量声明中包含方括号,如下所示:

var stats['impressions'] = ...

试试这个:

while (campaignIterator.hasNext()) {
  campaign = campaignIterator.next();
  campaignstats = campaign.getStatsFor('LAST_7_DAYS');
  stats['impressions'] += campaignstats.getImpressions();
  stats['clicks'] += campaignstats.getClicks();
  stats['conversions'] += campaignstats.getConversions();
  stats['cost'] += campaignstats.getCost();
}

stats['cpa'] = stats['cost']/stats['conversion'];

还请注意,我冒昧地介绍了+= operator。以下两个语句是等价的,但后者的输入更少并且(可以说)更易于阅读:

x[y] = x[y] + z;
x[y] += z;

【讨论】:

  • 工作正常。谢谢你的回答。
  • @UstavGupta - 我不知道,但var stats 本身就是一个有效的行,并且以方括号开头的行也是有效的,所以它可能需要一个分号指出将两者分开并解决眼前的问题。当然,这会导致同一行出现不同的错误,但是解释器/编译器无法读懂你的想法来猜测你实际上想在那里做什么。通常它会报告错误的行号,所以至少你知道在哪里看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-14
  • 1970-01-01
相关资源
最近更新 更多