【发布时间】:2014-12-28 04:05:55
【问题描述】:
对于 Google 电子表格使用的 Apps 脚本库中的内容是否有限制?具体来说,库可以包含 HTML 对话框吗?
我创建了一个电子表格脚本,它添加了一个菜单项以向用户展示一个对话框。它用
HtmlService.createHtmlOutputFromFile('mappingForm').setSandboxMode(HtmlService.SandboxMode.IFRAME)
如https://developers.google.com/apps-script/guides/html/communication 中所述。 HTML 文件包括 HTML、CSS 和带有 jQuery 的 JavaScript。它使用google.script.run 使用电子表格中的数据填充对话框并向其提交表单。
这在原始电子表格中一切正常。
但是,我需要多个电子表格来使用相同的代码,因此我尝试遵循Google Spreadsheet Scripts shared across spreadsheets (not libraries) 的一般想法,以拥有一个带有电子表格模板和多个副本的主脚本。
我按照https://developers.google.com/apps-script/guide_libraries 的指示从原始电子表格创建了一个库。当另一个电子表格使用该库时,我可以让对话框出现,但是所有对服务器的回调(填充对话框或提交表单)都会失败,并在浏览器端被google.script.run.withFailureHandler 捕获错误作为具有属性的Error 对象:
message: "We're sorry, a server error occurred. Please wait a bit and try again."
name: "ScriptError"
我在应用程序脚本中放置了 Logger 调用,以查看是否正在调用服务器端函数,但没有一个函数被命中。脚本编辑器的 Execution Transcript 显示:
[14-12-27 19:38:05:340 PST] 开始执行
[14-12-27 19:38:05:372 PST] 执行失败:很抱歉,发生服务器错误。请稍等,然后重试。 [0.0 秒总运行时间]
客户端正在拨打电话,但在到达电子表格脚本之前出现了故障。
这让我怀疑
- 我需要做一些不同的事情才能让代码像一个库一样工作。
- 库不能有对话框。
- 存在服务器错误。
提前感谢您的任何建议。
【问题讨论】:
-
当服务器连接没有问题时,Google 经常返回该服务器错误。我猜这可能与权限和共享有关,但我不确定如何解决。
-
@Sandy 目前,两个电子表格都有相同的所有者,但目标是最终让其他人拥有的电子表格使用该库。使用电子表格的项目属性显示以下范围:2 脚本所需的 OAuth 范围:googleapis.com/auth/script.send_mailgoogleapis.com/auth/spreadsheets
-
更新:自从我的原始帖子以来,我发现code.google.com/p/google-apps-script-issues/issues/… 其他人报告了同样的问题。
-
感谢您的更新。我应该首先给你那个链接。
标签: google-apps-script google-sheets