【问题标题】:Missing ) after argument list syntax error参数列表语法错误后缺少 )
【发布时间】:2020-02-07 22:34:05
【问题描述】:

我正在尝试制作一个脚本,该脚本根据从表单提交的数据创建一个新选项卡,并在创建时将公式插入到新选项卡中。脚本的最后一行给了我一个语法错误。 “参数列表后缺少 )”。所有括号似乎都正确关闭。我错过了什么吗?

function makeTabs() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var last = sheet.getLastRow();
  for(var i=0; i<last; i++){
    var tabName = sheet.getRange(i+1,1).getValue();
    var create = ss.insertSheet(tabName);
    var tab = ss.getRange('A2').activate();
    var tab = ss.getCurrentCell().setFormula('=QUERY(\'Form Responses 1\'!A2:R,"select * where C="'tabName'",-1)")');
  }
}

【问题讨论】:

  • 您的变量在引号之外,并且您没有对其执行任何操作。改成这个... C=" + tabName + " ...
  • 这很有帮助。它将 tabName 放入文档中。我确实需要添加额外的引号以确保查询在前端运行:C=""' +tabName+ '"""
  • 在 setformula 表达式中检查您的“tabName”

标签: javascript google-apps-script google-sheets syntax google-sheets-formula


【解决方案1】:

假设 tabName 是一个字符串,它应该是单引号括在 Google 表格一侧。在 Google Apps 脚本端也可以使用 + 进行连接

替换

'=QUERY(\'Form Responses 1\'!A2:R,"select * where C="'tabName'",-1)")'

通过

'=QUERY(\'Form Responses 1\'!A2:R,"select * where C=\'"' + tabName + '\'",-1)")'

另一方面,请记住,最佳做法不鼓励在循环内使用 Apps 脚本读/写方法

参考

【讨论】:

    【解决方案2】:

    最后一个语句中存在语法错误,您将两个字符串与tabName 连接起来。可以使用+ 运算符执行字符串连接,如下所示:

    '=QUERY(\'Form Responses 1\'!A2:R,"select * where C="' + tabName + '",-1)")'
    

    收到错误是因为没有表示操作的运算符或表示附加参数的逗号,它期望看到函数以) 结束。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-04
      • 2020-11-13
      • 2018-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多