HTML服务很慢

时间:2016-01-05 05:25:05

标签: google-apps-script

我正在尝试使用HTML服务的模态对话框为Google文档创建附加组件,但是运行我的脚本和对话框窗口中发生的事情之间的时间非常慢。

这是一个非常简单的例子。 (这有点黑客,因为从Example.html调用foo会覆盖第一个日志)

// Code.gs
function openDialog() {
  var html = HtmlService.createHtmlOutputFromFile('Example')
      .setSandboxMode(HtmlService.SandboxMode.IFRAME);

  Logger.log("hi");
  var temp = Logger.getLog();

  DocumentApp.getUi()
      .showModalDialog(html, temp);
}

function foo() {
  Logger.log("bye");
}

// Example.html
<script>google.script.run.foo();</script>

如果我运行它,第一个日志和第二个日志之间的差异大约为4秒。这只是它的方式吗?

1 个答案:

答案 0 :(得分:2)

简短的回答:是的。您的方法是调用服务器端函数的最佳方法之一。

长答案:每documentation,尝试loading data asynchronously。它说-

  

Templated HTML可用于快速构建简单的界面,但应限制使用它以确保UI响应。加载页面后,模板中的代码将执行一次,并且在处理完成之前,不会将任何内容发送到客户端。在scriptlet代码中包含长时间运行的任务会导致UI变慢。

您也可以尝试在用户界面中提供微调器/预加载器,这将有助于改善UX。

它也建议我们Use the HTML5 document type declaration,即

  

如果您的页面是使用较新的IFRAME sandbox mode来提供的,请确保在HTML文件顶部包含以下代码段。

<!DOCTYPE html>

希望这会有所帮助。