【发布时间】:2021-04-13 17:46:41
【问题描述】:
所以我有一个由几十张工作表使用的库,它像这样调用各个函数:
(来自菜单)
.addItem('What are the variables for this sheet', 'LibraryName.logMyVariables')
这一切都很好,但现在我遇到了一个问题,我似乎无法操作模态对话框。
这两部分工作正常:
.addItem('Show dialog (BETA)', 'LibraryName.showDialog')
(在库端,后端 gs)
function showDialog() {
var html = HtmlService.createHtmlOutputFromFile('projectDialog')
.setWidth(900)
.setHeight(900);
SpreadsheetApp.getUi()
.showModalDialog(html, 'Project Update Thingy');
}
到目前为止一切顺利。我遇到问题的地方是库脚本的前端对话框尝试运行其填充数字功能。虽然从拥有该库的电子表格运行时它工作得很好,但运行该库的其他电子表格却出现错误。
这是在对话框 html 中。
google.script.run.withSuccessHandler(addOptions).withFailureHandler(errorOutput).getExistingProjectNumbers();
我收到此错误:
google.script.run.withSuccessHandler(...).withFailureHandler(...).getExistingProjectNumbers 不是函数 在 userCodeAppPanel:2
我的直觉是,这意味着对话框在本地运行,所以我需要像调用其他库函数一样调用它(这会破坏它在实际库上的工作,但我不在乎)所以我尝试了:
google.script.run.withSuccessHandler(addOptions).withFailureHandler(errorOutput).LibraryName.getExistingProjectNumbers();
但这变成了这个错误
VM34:2 未捕获的类型错误:无法读取属性 'getExistingProjectNumbers' of undefined
我觉得我已经很接近了,我只需要更多的见解来解决这个问题。让我重申一下,这个函数在库脚本电子表格本身中运行得很好,只有当你通过库访问对话框时我才会遇到这个问题。
【问题讨论】:
-
它不会让我回答我自己的问题,但我发现了答案,我需要调用 g.s.run 库函数的本地包装器。因为只有 4 个是可行的。
-
虽然我不确定我是否能正确理解你的情况,例如,这个线程对你的情况有用吗? stackoverflow.com/q/66711782
标签: google-apps-script modal-dialog