4

我正在编写一个简单的脚本来废弃一些报告数字。我收到错误消息“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();
}

谢谢你的帮助!

4

1 回答 1

4

从循环中var的每一行以及之后的语句中删除该语句。while

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

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;
于 2013-07-12T09:36:44.717 回答