Google Sheets脚本中含撇号名称的公式语法问题求助
解决方法
核心逻辑
在Google Sheets公式中,字符串内部的单引号需要用两个连续单引号转义;而在Apps Script的字符串里,为避免引号嵌套冲突,最简洁的方式是用**反引号(`)**包裹整个公式字符串,省去繁琐的转义操作。
修复错误示例2
原问题是公式中C='O'Brien, Conan'的单引号未按Sheets规则转义,同时Apps Script字符串嵌套导致语法错误。修复后代码:
spreadsheet.getRange('B6').setFormula(`=iferror(query('Contact list'!A6:F,"Select A,B,C,D where C='O''Brien, Conan'",0),"None")`);
说明:
- 用反引号包裹整个公式,无需转义内部的单引号和双引号
- 将Sheets公式内的
O'Brien改为O''Brien,符合Sheets字符串单引号转义规则
修复错误示例3
原问题是公式中"O'Keefe"的单引号未转义,修复后代码:
spreadsheet.getRange('D3').setFormula(`=ARRAYFORMULA(IF((NOT(ISBLANK(A3:A))),"O''Keefe",""))`);
说明:
- 同样用反引号包裹公式,简化嵌套处理
- 将
O'Keefe改为O''Keefe,满足Sheets对字符串内单引号的转义要求
备选方案(不用反引号)
如果习惯用单引号或双引号包裹公式,需对内部引号手动转义:
- 用双引号包裹整个公式时,内部双引号加反斜杠转义,Sheets公式内单引号仍用两个连续单引号:
spreadsheet.getRange('B6').setFormula("=iferror(query('Contact list'!A6:F,\"Select A,B,C,D where C='O''Brien, Conan'\",0),\"None\")");
- 用单引号包裹整个公式时,内部单引号加反斜杠转义,Sheets公式内单引号用两个连续单引号:
spreadsheet.getRange('B6').setFormula('=iferror(query(\'Contact list\'!A6:F,"Select A,B,C,D where C=\'O\'\'Brien, Conan\'",0),"None")');
反引号写法更简洁易读,推荐优先使用。
内容的提问来源于stack exchange,提问作者MUNGHOLMI
相关产品推荐
相关产品推荐

