繁体   English   中英

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');
}

到目前为止,一切都很好。 我遇到问题的地方是库脚本的前端对话框尝试运行其填充编号 function 时。 虽然从拥有该库的电子表格运行时它工作得很好,但我从运行该库的其他电子表格中收到错误消息。

这是在对话框 html 中。

google.script.run.withSuccessHandler(addOptions).withFailureHandler(errorOutput).getExistingProjectNumbers();

我收到此错误:

google.script.run.withSuccessHandler(...).withFailureHandler(...).getExistingProjectNumbers 不是 userCodeAppPanel:2 的 function

我的直觉是,这意味着对话框在本地运行,所以我需要像调用其他库函数一样调用它(这会破坏它在实际库上的工作,但我不在乎)所以我尝试了:

google.script.run.withSuccessHandler(addOptions).withFailureHandler(errorOutput).LibraryName.getExistingProjectNumbers();

但这变成了这个错误

VM34:2 未捕获的类型错误:无法读取未定义的属性“getExistingProjectNumbers”

我觉得我已经很接近了,我只需要更多的洞察力来解决这个问题。 让我重申一下,这个 function 确实在库脚本电子表格本身中运行得很好,只有当您通过库访问对话框时我才会遇到这个问题。

事实证明,运行库的页面只需要包装函数。

我必须添加到本地页面的只是四个这样的功能

function getExistingProjectNumbers(){Library.getExistingProjectNumbers()}

我在一个随机博客中找到了这个解决方案。 如果您有四个以上的函数,您可以通过将 function 作为参数传递给一个通用包装器 function 来使其复杂化,但这对我来说更整洁且合理,因为 ui 仅使用 4 个后端函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM