【发布时间】:2021-12-03 08:10:01
【问题描述】:
我正在将我的脚本转换为附加组件。其中一个需求是配置模板,因此我编写了一个启动字段选择器的侧边栏。由于侧边栏没有足够的空间供选择器使用,我必须通过在服务器端调用以下代码从从侧边栏创建的模式对话框中启动它:
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 创建的模态对话框传递给其父级?也许它不是它的父级,这就是它不起作用的原因。
【问题讨论】:
-
我不相信有办法做到这一点。我相信侧边栏和模式就像两个完全独立的应用程序,或者更像是两个独立的会话。选择文件选择器后,即使是 mailchimp 邮件合并插件也必须重新加载侧边栏。
-
如果您由当前用户运行这两个元素,那么您可以使用Properties Service
-
@AlexanderIvanov 我知道,事实上我这样做是为了在他们之间共享数据,但这并不能解决在不重新加载侧边栏的情况下传达 UI 的部分。
标签: google-apps-script google-sheets web-applications google-docs google-picker