Google Sheets Apps Script自定义函数执行内部错误问题排查
Google Sheets 公开插件自定义函数周期性报内部执行错误问题
问题表现
- 自定义函数运行时周期性返回报错:
Internal error executing the custom function. - App Script 官方执行日志显示,触发该报错时自定义函数执行时长为
0 (zero) seconds - 自定义函数第一行已添加
Logger.log打印逻辑,报错触发时该行日志完全不会输出,可判断自定义函数调用请求未到达代码执行服务端,属于平台层面错误
已尝试的处理方案
- 多次向Google官方反馈该问题,得到的答复均为「在函数中添加随机延迟」「使用指数退避策略」
- 按建议添加随机延迟后,报错出现频率略有下降,但未完全消除
- 已为所有App Script API调用实现指数退避重试逻辑,仍会触发该报错
- 开发全程遵循App Script官方文档给出的最佳实践(包括规范使用范围批量操作等),报错依然存在
现有代码实现
指数退避封装函数
function call_(func) { for (var n = 0; n < 6; n++) { try { return func() } catch (e) { Logger.log(`Retrying... ${n + 1} times exception: ${e}`) if (n === 6 - 1) { throw e } Utilities.sleep( Math.pow(2, n) * 1000 + Math.round(Math.random() * 1000) ) } } }
自定义函数精简逻辑
function CUSTOMFUNCTION() { let apiResponse = call_(() => UrlFetchApp.fetch(someUrl, { muteHttpExceptions: true, }) ) let response = JSON.parse(call_(() => apiResponse.getContentText())) // 对响应结果执行业务逻辑处理 return value }
上述代码未捕获HTTP异常为刻意的设计选择。
问题复现特征
- 在脚本绑定的开发测试表格中,任何操作都无法复现该报错
- 报错仅在脚本通过GCP部署后出现:部署方式为在GCP中使用Google Workspace Marketplace SDK绑定脚本ID,将插件发布为所有用户可安装到自身Google Sheets的公开插件
- 过去数月持续向Google团队提交排查申请,始终未得到有效解决方案,征集同类问题的解决思路。
内容的提问来源于stack exchange,提问作者Sheldon
相关产品推荐
相关产品推荐

