gpt4 book ai didi

google-apps-script - 如何将页面(模式对话框)与其同级页面(侧边栏)进行通信?

转载 作者:行者123 更新时间:2023-12-02 20:35:41 25 4
gpt4 key购买 nike

我正在将我的脚本转换为附加组件。其中一个需求是配置模板,因此我编写了一个启动字段选择器的侧边栏。由于侧边栏没有足够的空间容纳选择器,因此我必须通过在服务器端调用以下代码,从从侧边栏创建的模式对话框中启动它:

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 创建的模式对话框传递到其父级?也许它并不是真正的父级,这就是它不起作用的原因。

最佳答案

Perhaps it's not really its parent and that's the reason for it not working.

对 - 这里实际上并没有 DOM 父/子关系。侧边栏和模式对话框都是从服务器端脚本启动的,并且是独立的。不过,它们都可以与服务器通信,因此您可以使用存储转发技术将结果从选择器获取到侧边栏。

基本思想:

  • 一旦请求启动选择器,侧边栏就会开始轮询服务器以获取选择器的结果。
  • 选择器的结果将使用 google.script.run 发送到服务器。
  • 服务器将临时存储结果 - 这可能像全局变量一样简单,具体取决于您的情况。
  • 一旦有结果,下一次民意调查就会检索它。

看看How to poll a Google Doc from an add-on了解轮询器的基本思想。

Message Sequence Chart

关于google-apps-script - 如何将页面(模式对话框)与其同级页面(侧边栏)进行通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23310563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com