[英]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.