Google Apps Script库集成后google.script.run调用后端函数提示不是函数
Google Apps Script库集成时google.script.run调用失败的问题修复
问题根源
当通过宿主脚本打开库的侧边栏时,google.script.run的执行上下文是宿主脚本,而非你开发的库脚本。前端代码里直接调用myBackendFunctionName会报错,因为这个函数只存在于库中,宿主脚本没有定义对应的函数,所以找不到。
修复方案
方案一:宿主脚本封装转发函数(推荐)
在宿主脚本的Script.gs中添加一个转发函数,将前端的调用转交给库的对应函数:
// 宿主脚本 > Script.gs function myBackendFunctionName(someArgument) { // 转发调用到库的函数 return myLibrary.myBackendFunctionName(someArgument); }
这样前端的google.script.run.myBackendFunctionName()就能找到宿主脚本中的这个函数,再由它调用库的目标函数,完全复用库的逻辑实现。
方案二:修改库的前端代码(需注意权限)
如果不想在宿主脚本中添加转发函数,可以修改库的sidebar.html,明确通过库的引用路径调用函数,但前提是库的函数设置为公开可访问(库脚本中函数不能是私有):
<!-- 库 > sidebar.html 修改后代码 --> <script> google.script.run .withSuccessHandler((backendResponse) => { console.log('Successfully got backend response!'); }) .withFailureHandler((error) => { console.log('Error getting backend response!'); }) // 明确指定库的标识 + 函数名 .myLibrary.myBackendFunctionName(someArgument); </script>
不过这种方法可能受库的权限设置、宿主脚本引用库的方式影响,稳定性不如方案一。
额外注意事项
- 确保库中的
myBackendFunctionName函数是公开函数(库脚本中函数未加private修饰,且在脚本编辑器中权限设置为允许外部调用) - 宿主脚本引用库时,确认选择了正确的库版本,且权限设置允许宿主脚本调用库的函数
内容的提问来源于stack exchange,提问作者user7607751
相关产品推荐
相关产品推荐

