Google Apps 脚本弹出对话框,库问题
Google Apps Script Popup Dialog, library issues
所以我有一个被几十张纸使用的库,它调用这样的各个函数:
(来自菜单)
.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
is not a function
at userCodeAppPanel:2
我的直觉是这意味着对话框在本地 运行ning,所以我需要像调用其他库函数一样调用它(这会破坏它在实际库中的工作,但我不在乎) 所以我尝试了:
google.script.run.withSuccessHandler(addOptions).withFailureHandler(errorOutput).LibraryName.getExistingProjectNumbers();
但这变成了这个错误
VM34:2 Uncaught TypeError: Cannot read property
'getExistingProjectNumbers' of undefined
我觉得我已经很接近了,我只需要再深入了解一下即可解决此问题。让我重申一下,这个函数在库脚本电子表格本身中 运行 很好,只有当您通过库访问对话框时我才会遇到这个问题。
事实证明,页面 运行 库只需要包装函数。
我只需要添加到本地页面就是这样的四个功能
function getExistingProjectNumbers(){Library.getExistingProjectNumbers()}
我在一个随机的博客中找到了这个解决方案。如果你有四个以上的函数,你可以通过将函数作为参数传递给一个通用包装函数来使它变得复杂,但这对我来说更简洁而且合理,因为 ui 只使用了 4 个后端函数。
所以我有一个被几十张纸使用的库,它调用这样的各个函数:
(来自菜单)
.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 is not a function at userCodeAppPanel:2
我的直觉是这意味着对话框在本地 运行ning,所以我需要像调用其他库函数一样调用它(这会破坏它在实际库中的工作,但我不在乎) 所以我尝试了:
google.script.run.withSuccessHandler(addOptions).withFailureHandler(errorOutput).LibraryName.getExistingProjectNumbers();
但这变成了这个错误
VM34:2 Uncaught TypeError: Cannot read property 'getExistingProjectNumbers' of undefined
我觉得我已经很接近了,我只需要再深入了解一下即可解决此问题。让我重申一下,这个函数在库脚本电子表格本身中 运行 很好,只有当您通过库访问对话框时我才会遇到这个问题。
事实证明,页面 运行 库只需要包装函数。
我只需要添加到本地页面就是这样的四个功能
function getExistingProjectNumbers(){Library.getExistingProjectNumbers()}
我在一个随机的博客中找到了这个解决方案。如果你有四个以上的函数,你可以通过将函数作为参数传递给一个通用包装函数来使它变得复杂,但这对我来说更简洁而且合理,因为 ui 只使用了 4 个后端函数。