Google Apps Script中google.script.host.close()无法关闭模态对话框
Google Workspace插件模态框无法关闭:
this.H.dispatchEvent is not a function 修复方案 你的代码里doAThing函数存在关键错误,导致模态框无法正常关闭:调用HtmlService.createTemplateFromFile得到的是模板对象(Template),你直接在模板对象上调用setHeight和setWidth,但这些方法属于HtmlOutput对象,而非模板对象。错误的调用顺序让生成的HTML输出没有正确初始化,进而引发google.script.host对象异常,触发dispatchEvent相关报错。
修正后的doAThing函数代码
function doAThing() { var template = HtmlService.createTemplateFromFile("doAThing"); // 先通过evaluate()将模板转为HtmlOutput对象,再设置宽高 var htmlOutput = template.evaluate(); htmlOutput.setHeight(230); htmlOutput.setWidth(230); var ui = DocumentApp.getUi(); ui.showModalDialog(htmlOutput, "Do a Cool Thing"); }
关键说明
- 原代码中
th.evaluate()执行后没有保存返回值,直接在模板对象th上调用setHeight/setWidth完全无效,因为模板对象本身不提供这些方法。 - 必须先通过
evaluate()把模板转换成可用于模态框的HtmlOutput对象,再对这个对象设置宽高,才能保证模态框加载完整的脚本环境,让google.script.host.close()正常执行。
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

