Switch脚本语法错误求助:Unexpected token '{'报错(第8行)
脚本语法错误修复:Unexpected token '{'
直接报错原因
第8行的switch语句缺少闭合括号,原代码switch (r.getColumn() { 应改为 switch (r.getColumn()) {,这是触发SyntaxError: Unexpected token '{'的核心原因。
其他潜在问题及修正
除了语法错误,代码里还有几个逻辑/变量错误,不修复会导致脚本运行失败:
- 第4行变量名错误:
var sheet = range.sheet;应改为var sheet = r.sheet;(前面定义的范围变量是r,不是range) - 未定义变量
s:代码中多次出现的s.getLastColumn()、s.getRange(...)里的s未声明,应替换为sheet(即当前操作的工作表) - 行清空逻辑错误:
moveTo(target).range.clearContent()写法错误,moveTo方法返回的是目标区域,原行的清空需要单独调用原区域的clearContent()方法
修正后的完整代码
function allInOne(e) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var r = e.range; var sheet = r.sheet; var sheetName = sheet.getName(); if (e.value != "") { if (sheetName == "Pipe") { switch (r.getColumn()) { case 7: var row = r.getRow(); var numColumns = sheet.getLastColumn(); var targetSheet = ss.getSheetByName("Återkomster"); var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); sheet.getRange(row, 2, 1, numColumns).moveTo(target); sheet.getRange(row, 2, 1, numColumns).clearContent(); // 执行第7列相关任务 break; case 8: var row = r.getRow(); var numColumns = sheet.getLastColumn(); var targetSheet = ss.getSheetByName("Bokad"); var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); sheet.getRange(row, 2, 1, numColumns).moveTo(target); sheet.getRange(row, 2, 1, numColumns).clearContent(); // 执行第8列相关任务 break; case 13: var row = r.getRow(); var numColumns = sheet.getLastColumn(); var targetSheet = ss.getSheetByName("Bokad"); var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); sheet.getRange(row, 2, 1, numColumns).moveTo(target); sheet.getRange(row, 2, 1, numColumns).clearContent(); // 执行第13列相关任务 break; default: // 编辑发生在无需监听的列,不执行操作 return; } } } }
内容的提问来源于stack exchange,提问作者Eric Morandeau
相关产品推荐
相关产品推荐

