Google Apps Script报错SyntaxError: Unexpected token '<'求助
解决Google Apps Script中加载pako.js报错SyntaxError: Unexpected token '<'的问题
报错原因
你遇到的SyntaxError: Unexpected token '<'本质是UrlFetchApp.fetch('https://cdn.rawgit.com/nodeca/pako/master/dist/pako.js')获取到的内容不是预期的pako压缩库JS代码,而是HTML错误页面(比如服务终止提示、404页面)。eval解析HTML时遇到<符号,就会触发语法错误。
rawgit服务早已停止运营,之前能正常运行是因为缓存,现在缓存失效后,多数请求都会返回错误页面,导致偶尔能执行但无法规模化使用。
解决方案
方案一:替换为可靠的CDN地址
将加载pako的代码替换为使用jsDelivr的稳定CDN地址,确保每次都能获取到正确的JS代码:
eval(UrlFetchApp.fetch('https://cdn.jsdelivr.net/npm/pako@latest/dist/pako.js').getContentText());
方案二:内嵌pako代码(推荐,稳定性更高)
避免依赖外部网络请求,直接把pako代码嵌入到Google Apps Script项目中:
- 打开pako的官方分发地址,复制全部JS代码。
- 在Google Apps Script编辑器中,点击左侧「文件」→「新建」→「脚本文件」,命名为
pako。 - 将复制的代码粘贴到这个新文件里。
- 删除原来那行
eval(...)的代码,直接调用pako.inflate即可。
修改后的完整代码示例:
function mavenlink_raw(s1, options, report_id) { // PULL MAVENLINK REPORT var url = "https://api.mavenlink.com/api/v1/scheduled_jobs/insights_report_exports/"+report_id var response = UrlFetchApp.fetch(url, options); var dataSet = JSON.parse(response.getContentText()); var gzip = dataSet.latest_success.url // CONVERT GZIP TO CSV var charData = UrlFetchApp.fetch(gzip).getContent(); var binData = []; for (var i = 0; i < charData.length; i++) { binData.push(charData[i] < 0 ? charData[i] + 256 : charData[i]); } var data = pako.inflate(binData); var decoded = ''; for (var i = 0; i < data.length; i++) { decoded += String.fromCharCode(data[i]); } var rows = Utilities.parseCsv(decoded); // 补充后续处理逻辑 }
内容的提问来源于stack exchange,提问作者Nicholas Britton
相关产品推荐
相关产品推荐

