Google Apps Script添加QUERY公式报错求助
问题解决:Google Apps Script中setFormula的语法错误
错误原因
你的代码里,setFormula的参数字符串嵌套了双引号,JavaScript会把内部的"where...当成字符串结束标记,导致语法结构断裂,出现missing ) after argument list错误。
修正后的单个RMA同步脚本
直接转义内部双引号,或者改用单引号包裹外层字符串,两种写法都可以:
写法1(外层双引号,内部双引号转义):
function sheetRMA(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); // 直接通过工作表名获取,比索引更稳定 var rmaSheet = ss.getSheetByName("RMA"); var cell = rmaSheet.getRange("A2"); cell.setFormula("=query('HelpDesk Tickets'!A:F, \"where E = 'RMA' \",0)"); }
写法2(外层单引号,内部单引号转义):
function sheetRMA(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var rmaSheet = ss.getSheetByName("RMA"); var cell = rmaSheet.getRange("A2"); cell.setFormula('=query(\'HelpDesk Tickets\'!A:F, "where E = \'RMA\' ",0)'); }
批量同步所有8个分类的优化脚本
不用逐个写函数,一次性同步所有分类工作表:
function syncAllTicketSheets(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); // 替换成你的8个分类名称,和对应工作表名一致 var categories = ["RMA", "分类1", "分类2", "分类3", "分类4", "分类5", "分类6", "分类7"]; categories.forEach(function(category){ var targetSheet = ss.getSheetByName(category); if(targetSheet){ // 避免因工作表不存在报错 var cell = targetSheet.getRange("A2"); var formula = '=query(\'HelpDesk Tickets\'!A:F, "where E = \'' + category + '\' ",0)'; cell.setFormula(formula); } }); }
内容的提问来源于stack exchange,提问作者Help_Please
相关产品推荐
相关产品推荐

