繁体   English   中英

如何在我的Google Apps脚本/ Google表格HTML中包含脚本?

[英]How do I include scripts in my Google Apps Script/Google Sheets HTML?

我无法使我的基于Apps脚本的HTML包含任何脚本。

我的HtmlService doGet函数可以HtmlService工作:

function doGet() {
return HtmlService.createHtmlOutputFromFile('myhtmlfilename');
}

无论我的HTML文件上是否有任何脚本标签,我似乎都能得到以下信息:

错误

我尝试将所有JavaScript都存储在带有标签的单独HTML文件中(称为JavaScript.html ),然后使用强制打印脚本将它们重新包含到HTML中。

我的HTML文件包含我的脚本标签:

<script>
function transferItems(){
google.script.run.test();
}

</script>

我的功能是将脚本HTML包含为scriptlet,我也尝试将其作为“ getRawContent”而不是“ evaluate”:

function include(filename) {
return HtmlService.createTemplateFromFile(filename).evaluate().getContent();
}

我的脚本:

<?!= include('JavaScript'); ?>

我在我的code.gs中的函数称为test()

function test() {
alert("This is a test."); 
}

我在主HTML页面中的按钮,通过该按钮试图调用test()函数:

<button onClick="transferItems()">Transfer</button>

无论我尝试什么,我的页面最终都会在浏览器中将那些scriptlet显示为文本。

显示结果

我想念什么?

我阅读的所有答案和教程均来自2015ish或更早版本。 我觉得我在关注Google的文档。

如果使用HTMLService进行评估时,HTML文件中包含<?...?>脚本,则需要使用createTemplateFromFile()否则它们将被视为纯文本。 createOutputFromFile()无法用于评估脚本标签。

function doGet() {
 return HtmlService.createTemplateFromFile('myhtmlfilename').evaluate();
}

编辑:您的包括不需要评估那些<? ?> <? ?> scriptlet。 所以它只需要像这样:

function include(filename) { 
return HtmlService.createHtmlOutputFromFile(filename).getContent();
}

用我的手机接听,所以代码可能并不完美。

接受的答案对我有用,但我还想补充一点,您可以在模板中内联执行包含逻辑,而不必制作单独的include()函数。 例如 ...

<html>
<head>
    <?!= HtmlService.createHtmlOutputFromFile('ClientScript').getContent(); ?>
</head>

我有唯一的问题是编辑器不使用JavaScript HTML工作为好; 我真的希望我可以使用此方法包括.gs文件来在客户端和服务器之间重用功能。

这是一个参考页面,解释了使用这种方法分离CSS和JavaScript文件的过程: https : //yagisanatode.com/2018/04/15/google-apps-script-how-to-create-javascript-and-css-files -对于-A-侧边栏项目中,谷歌-应用程序-脚本/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM