Google Apps 脚本:奇怪的“缺少 ; before statement”。错误

Posted

技术标签:

【中文标题】Google Apps 脚本:奇怪的“缺少 ; before statement”。错误【英文标题】:Google Apps Script: strange "Missing ; before statement." error 【发布时间】: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。 【参考方案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 本身就是一个有效的行,并且以方括号开头的行也是有效的,所以它可能需要一个分号指出将两者分开并解决眼前的问题。当然,这会导致同一行出现不同的错误,但是解释器/编译器无法读懂你的想法来猜测你实际上想在那里做什么。通常它会报告错误的行号,所以至少你知道在哪里看。

以上是关于Google Apps 脚本:奇怪的“缺少 ; before statement”。错误的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 Apps 脚本运行 Google 表格插件?

Google Apps 脚本:Google 表格分组

如何通过 Apps 脚本在 Google 表格中“清除格式”

使用 Google BigQuery / Apps 脚本为插入 Google 表格的数据添加时间戳

Google Apps脚本查找列的底部

如何使用 Google Apps 脚本执行 API + Java 创建 Google 表单?