为什么HTML脚本无法获取Code.gs文件返回的YouTube标题列表?
问题原因
你代码的核心错误是对google.script.run的异步特性理解不到位:google.script.run调用服务端函数时不会同步返回执行结果,你代码里const list = google.script.run.youtube("test")拿到的不是服务端返回的标题数组,后续的document.write自然没有效果。
修复方案
1. 修正前端html代码的逻辑
需要通过withSuccessHandler绑定成功回调,拿到服务端返回的结果后再执行DOM操作,同时建议加withFailureHandler捕获服务端报错,方便排查问题。修正后的youtube.html代码如下:
<!DOCTYPE html> <html> <head> <base target="_top"> </head> <body> <button onclick="printData()">Return</button> <script> function printData(){ google.script.run .withFailureHandler(err => alert("调用失败:" + err)) .withSuccessHandler(list => { // 拿到返回的标题数组后再操作 document.write(list.join("<br>")) }) .youtube("test") } </script> </body> </html>
2. 检查服务端依赖配置
如果修改后仍提示调用失败,需要确认你已经在Google Apps Script编辑器中启用了YouTube Data API高级服务:
- 打开GAS编辑器,点击左侧边栏「服务」+号
- 找到「YouTube Data API v3」,添加到项目中即可
内容的提问来源于stack exchange,提问作者Optimus
相关产品推荐
相关产品推荐

