Google Apps Script模板字面量含URL触发语法错误的问题问询
问题解答
1. 问题成因与修正措施
这个问题的核心原因是Google Apps Script的HtmlService在解析<script>标签内的模板字面量时存在解析bug:当模板字面量中包含https://这类带有双斜杠的URL时,解析器错误地将URL里的//识别为JavaScript行注释的起始标记,导致模板字面量的结束反引号()被当成注释内容的一部分,最终JavaScript解析时发现模板字面量没有正确闭合,抛出Unexpected end of input`语法错误。
举个直观的例子,你的原始代码:
let x = `https://api.airtable.com`;
被错误处理后,相当于变成了:
let x = `https: //api.airtable.com`; // 这里的`被注释掉了,导致模板字面量未闭合
正确的修正措施有两种:
- 最推荐的方案:将模板字面量替换为普通的单引号或双引号包裹URL,这样就不会触发解析bug:
let x = 'https://api.airtable.com'; // 或者 let x = "https://api.airtable.com"; - 如果一定要使用模板字面量(比如后续需要拼接字符串),可以对URL中的双斜杠进行转义:
不过这种方式会让URL可读性下降,所以优先推荐第一种方案。let x = `https:\\/\\/api.airtable.com`;
2. 错误行号与源码的对应关系
错误提示里的userCodeAppPanel:3是Google Apps Script对用户代码进行处理后,在其内部运行环境(userCodeAppPanel是Google的内部应用面板容器)中的行号,和你原始HTML源码的行号没有直接的一一对应关系。
Google会对上传的HTML文件做一系列后台处理:比如代码压缩、内容转义、将你的代码整合到其内部的插件框架代码中,这些操作都会改变代码的行结构。所以这个行号只能作为一个大致的错误范围参考,无法直接定位到你源码里的具体行。
内容的提问来源于stack exchange,提问作者Mike Hogan
相关产品推荐
相关产品推荐

