Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.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
Javascript GAS HTMLService:使用模板中包含的文件中的createTemplateFromFile推送变量_Javascript_Html_Google Apps Script - Fatal编程技术网

Javascript GAS HTMLService:使用模板中包含的文件中的createTemplateFromFile推送变量

Javascript GAS HTMLService:使用模板中包含的文件中的createTemplateFromFile推送变量,javascript,html,google-apps-script,Javascript,Html,Google Apps Script,我使用CreateTemplateFromFile并在模板中推送一个变量。我的模板文件包含另一个文件,但我无法将此变量推入嵌入的第二个文件中 下面是我尝试过的: index.html: ... index.html的脚本部分位于单独的文件中: 函数getData(){ $(“#loadingMessage”).html('Loading'); log('myContent:',); ... } Google应用程序脚本代码的doGet部分: var template = HtmlServ

我使用CreateTemplateFromFile并在模板中推送一个变量。我的模板文件包含另一个文件,但我无法将此变量推入嵌入的第二个文件中

下面是我尝试过的:

index.html:


...
index.html的脚本部分位于单独的文件中:


函数getData(){
$(“#loadingMessage”).html('Loading');
log('myContent:',);
...
}
Google应用程序脚本代码的doGet部分:

var template = HtmlService.createTemplateFromFile('index');
template.data = myContent;

return template.evaluate()
  .setSandboxMode(HtmlService.SandboxMode.IFRAME);
变量被正确地推入index.html中,但未到达脚本部分。 有什么想法吗?可能还需要将脚本文件作为模板包含?

如何在应用程序脚本和Javascript之间传递变量。 GoogleApps脚本的特点是该方法可以从应用程序的JS部分调用。这些方法允许将参数传递给Apps脚本函数,并将GAS函数的返回值分配回JS函数

示例:

.gs文件

HTML/js文件

还要记住:

  • 由于您编写的代码不是直接执行的,因此调试模板可能很困难;相反,服务器将模板转换为代码,然后执行生成的代码

您想将数据从.gs部分推送到.js部分还是相反?您好,我想将已经准备好的数据从gs推送到js,以避免在我的页面中出现复杂的js代码。与通过HtmlService的模板系统推送值相比,在您的示例中使用google.script.run有什么附加值?我认为它可以在我的具体情况下工作,但需要混合使用这两种解决方案。我更新了我的答案,提到了使用Scriptlet的限制,并给出了修改建议,如果您仍然想使用它们。非常感谢Ziganotschka为您提供的时间和解释。刚刚在我的代码上测试了你的建议,效果非常好!再次感谢!很高兴它有帮助!
function doGet() {
var template = HtmlService.createTemplateFromFile('index');

return template.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);

}

function myContent(input) {
  var myContent="foo"+input;
  return myContent;
}
<html>
  <head>
    <base target="_top">
  </head>
  <body onload="getData()">
    <script>
      function getData() {
        google.script.run.withSuccessHandler(proceedData).myContent("bar");
       ...
     }
      function proccedData(returnValue) {
        var data  = returnValue;
      }
    </script>
  </body>
</html>

//global variable
var data=myContent;

function doGet() {
  var temp=HtmlService.createTemplateFromFile("index.html");
  return temp.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);
}