HtmlService的文档没有说明这不起作用,但似乎模板方法仅限于Web应用程序Apps Script项目。
我试图使用HTMLService在SpreadSheet中创建一个UI,该UI可以采用一些初始上下文,然后与工作表进行交互。但是,尝试从工作表的Apps脚本项目中使用“ createTemplateFromFile”时,将引发运行时错误。
下面引用的“ changeDialog”是Apps Script项目中带有占位符标记的简单文件:
<h2> fieldName </h2>
Run Code Online (Sandbox Code Playgroud)
调用时,以下代码将引发异常“无效参数:用户界面”:
function showSidebar(){
var html = HtmlService.createTemplateFromFile('changeDialog');
html.evaluate();
SpreadsheetApp.getUi()
.showSidebar(html);
}
Run Code Online (Sandbox Code Playgroud)
更新:更新了无效的实际代码。并且...由[Mogsdad]回答。所有模板文档都显示了网页变体,其中“ doGet()”方法返回“ .evaluate()”的结果。我认为html对象承载着“评估”方法的内部状态。我发现您可以将结果设置为另一个var,或者只是在.showSideBar(...)方法中进行在线调用:
SpreadsheetApp.getUi()
.showSidebar(html.evaluate());
Run Code Online (Sandbox Code Playgroud)
要么...
var evaluatedHtml = html.evaluate();
SpreadsheetApp.getUi()
.showSidebar(evaluatedHtml);
Run Code Online (Sandbox Code Playgroud)