我正在将我的剧本转换成一个补充。其中一个需求是配置模板,因此我编写了一个侧栏,用于启动字段选择器。由于侧边栏没有足够的空间容纳选择器,我必须通过在侧边栏中创建的模态对话框启动它,方法是在服务器端调用此代码:
var html = HtmlService.createHtmlOutputFromFile('TemplatePicker.html')
.setWidth(600).setHeight(425);
SpreadsheetApp.getUi().showModalDialog(html, 'Select the file with the template');
我的问题是,一旦用户选择了文件,当我拥有所选文件的ID时,我无法将该ID传递给侧边栏。我尝试调用someJSFunctionOfSidebar(id)
和parent.someJSFunctionOfSidebar(id)
,但它不起作用,所以我最终结束了将值传递到服务器端并从那里重新加载侧边栏,但它很慢并且结果效果很难看
我的问题是:
有没有办法将客户端级别的值从使用SpreadsheetApp.getUi().showModalDialog
创建的模式对话框传递给其父级?也许它不是真正的父母,这也是它不起作用的原因。
答案 0 :(得分:7)
也许它不是真正的父母,这也是它不起作用的原因。
对 - 这里实际上没有DOM父/子关系。侧边栏和模态对话框都是从服务器端脚本启动的,并且是独立的。但是,它们都可以与服务器通信,因此您可以使用存储转发技术将选择器的结果传递到侧边栏。
基本理念:
google.script.run
发送到服务器。查看How to poll a Google Doc from an add-on了解轮询器的基本概念。