Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 谷歌应用程序脚本-HTML服务“;createTemplateFromFile";无法从应用程序内部使用(电子表格等)?_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 谷歌应用程序脚本-HTML服务“;createTemplateFromFile";无法从应用程序内部使用(电子表格等)?

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> 更新:使用不起作用的实际代码

HtmlService的文档没有说明这不应该起作用,但似乎模板方法仅限于web应用程序脚本项目

我试图使用HTMLService在电子表格中创建一个UI,该UI可以接受一些初始上下文,然后与工作表交互。但是,当尝试从工作表中的应用程序脚本项目中使用“createTemplateFromFile”时,会引发运行时错误

下面引用的“changeDialog”是应用程序脚本项目中带有占位符标记的简单文件:

<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);
}