如何在我的 Google Apps Script/Google Sheets HTML 中包含脚本?

Mat*_*t W 1 html javascript google-sheets google-apps-script

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

doGetHtmlService工作正常:

function doGet() {
return HtmlService.createHtmlOutputFromFile('myhtmlfilename');
}
Run Code Online (Sandbox Code Playgroud)

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

错误

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

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

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

</script>
Run Code Online (Sandbox Code Playgroud)

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

function include(filename) {
return HtmlService.createTemplateFromFile(filename).evaluate().getContent();
}
Run Code Online (Sandbox Code Playgroud)

我的脚本:

<?!= include('JavaScript'); ?>
Run Code Online (Sandbox Code Playgroud)

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

function test() {
alert("This is a test."); 
}
Run Code Online (Sandbox Code Playgroud)

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

<button onClick="transferItems()">Transfer</button>
Run Code Online (Sandbox Code Playgroud)

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

显示结果

我错过了什么?

我读过的所有答案和教程都来自 2015 年或更早。我觉得我正在关注 Google 的文档。

Chr*_*ris 6

如果<?...?>在使用 HTMLService 进行评估时您的 HTML 文件中有scriptlet,则需要使用,createTemplateFromFile()否则它们将被视为纯文本。这createOutputFromFile()不适用于评估脚本标签。

function doGet() {
 return HtmlService.createTemplateFromFile('myhtmlfilename').evaluate();
}
Run Code Online (Sandbox Code Playgroud)

编辑:您的包含不需要评估这些<? ?>脚本。所以它只需要是这样的:

function include(filename) { 
return HtmlService.createHtmlOutputFromFile(filename).getContent();
}
Run Code Online (Sandbox Code Playgroud)

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