Google apps script 谷歌应用程序脚本-HTML服务“;createTemplateFromFile";无法从应用程序内部使用(电子表格等)?
HtmlService的文档没有说明这不应该起作用,但似乎模板方法仅限于web应用程序脚本项目 我试图使用HTMLService在电子表格中创建一个UI,该UI可以接受一些初始上下文,然后与工作表交互。但是,当尝试从工作表中的应用程序脚本项目中使用“createTemplateFromFile”时,会引发运行时错误 下面引用的“changeDialog”是应用程序脚本项目中带有占位符标记的简单文件:Google apps script 谷歌应用程序脚本-HTML服务“;createTemplateFromFile";无法从应用程序内部使用(电子表格等)?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,HtmlService的文档没有说明这不应该起作用,但似乎模板方法仅限于web应用程序脚本项目 我试图使用HTMLService在电子表格中创建一个UI,该UI可以接受一些初始上下文,然后与工作表交互。但是,当尝试从工作表中的应用程序脚本项目中使用“createTemplateFromFile”时,会引发运行时错误 下面引用的“changeDialog”是应用程序脚本项目中带有占位符标记的简单文件: <h2> fieldName </h2> 更新:使用不起作用的实际代码
<h2> fieldName </h2>
更新:使用不起作用的实际代码进行更新。而且……由[莫格斯达德]回答。所有模板文档都显示web页面变量,其中“doGet()”方法返回“.evaluate()”的结果。我认为html对象具有“evaluate”方法的内部状态。我发现您要么将该结果设置为另一个var,要么只在.showSideBar(…)方法中的行中进行调用:
或者
您需要evaluate()
一个模板来创建HtmlOutput
对象
function showSidebar(){
var html = HtmlService.createTemplateFromFile('changeDialog');
var a = "test";
SpreadsheetApp.getUi()
.showSidebar(html.evaluate());
//////////
}
由于您的changedilog.html
文件不包含模板标记,因此您可以直接从中创建html文件:
function showSidebar(){
var html = HtmlService.createOutputFromFile('changeDialog');
//////
var a = "test";
SpreadsheetApp.getUi()
.showSidebar(html);
}
您似乎还没有详细阅读文档。请参阅的参考文档 我忘了在上面的注释中包含这一点,它仍然在生成错误…直到我查看了Web页面变体的示例。我刚刚调用了“.evaluate”,然后将“html”传递到方法中。我没有注意到.showSideBar和showModalDialog想要.evaluate的结果。谢谢你抓到了。仅供参考-我只是在调试最简单的HTML。我肯定会有内联变量、代码、回调等。
var evaluatedHtml = html.evaluate();
SpreadsheetApp.getUi()
.showSidebar(evaluatedHtml);
function showSidebar(){
var html = HtmlService.createTemplateFromFile('changeDialog');
var a = "test";
SpreadsheetApp.getUi()
.showSidebar(html.evaluate());
//////////
}
function showSidebar(){
var html = HtmlService.createOutputFromFile('changeDialog');
//////
var a = "test";
SpreadsheetApp.getUi()
.showSidebar(html);
}