Google Apps Script运行字符串分割代码时出现document is undefined错误
解决Google Apps Script里
document is undefined的报错 报错原因
Google Apps Script运行在Google的服务器环境中,并非浏览器环境——浏览器提供的document对象在这里不存在,document.write是浏览器端操作页面DOM的API,自然会触发未定义报错。
快速修复代码
如果只是想测试字符串分割函数的结果,把输出部分换成GAS支持的日志打印即可,同时给你的代码补全了缺失的大括号(避免逻辑异常):
function splitSrt(str, delim) { var word = ""; var substr_list = []; str = str + delim; var x = str.length; for( var i = 0; i < x; i++){ if(str[i] != delim) { word = word + str[i]; } else { if(word.length != 0) { substr_list.push(word); } word = ""; } } return substr_list; } function testSplit() { var str = "hello my world"; var delim = ' '; var res = splitSrt(str, delim); // 用Logger打印结果,后续去日志面板查看 res.forEach(a => Logger.log(a)); // 也可以用console.log,同样在日志面板查看 // res.forEach(a => console.log(a)); }
查看结果步骤
- 在GAS编辑器的函数下拉框选中
testSplit,点击Run按钮 - 点击编辑器顶部菜单栏的「查看」→「日志」,就能看到分割后的每个单词
拓展:如果需要在网页上输出
如果你的代码是用于Web App场景,需要把后端逻辑和前端页面分开编写:
Code.gs(后端逻辑)
function splitSrt(str, delim) { var word = ""; var substr_list = []; str = str + delim; var x = str.length; for( var i = 0; i < x; i++){ if(str[i] != delim) { word = word + str[i]; } else { if(word.length != 0) { substr_list.push(word); } word = ""; } } return substr_list; } function doGet() { return HtmlService.createHtmlOutputFromFile('index'); }
index.html(前端页面)
<!DOCTYPE html> <html> <body> <script> // 调用后端的splitSrt函数,拿到结果后在页面输出 google.script.run.withSuccessHandler(res => { res.forEach(a => { document.write(a + "<br>"); }); }).splitSrt("hello my world", " "); </script> </body> </html>
将项目部署为Web App后,访问生成的链接就能在页面上看到每行一个单词的效果。
内容的提问来源于stack exchange,提问作者dmarm
相关产品推荐
相关产品推荐

