[英]Included script in HTML file does not run in Google Apps Script HTMLService
我有一個正在加載的模板化 HTML 文件,可以使用如下代碼所示的函數加載其他 HTML。 我試圖讓包含的函數在腳本標簽中運行。 這是 Google Sheet 腳本中的 HTMLService。
在Code.gs我有
function doGet() {
var template = HtmlService.createTemplateFromFile("template")
.evaluate()
.setTitle('My Title')
.setHeight(700)
.setWidth(1000)
.setSandboxMode(HtmlService.SandboxMode.NATIVE);
return template
// SpreadsheetApp.getActive().show(template);
};
function include(filename) {
return HtmlService.createHtmlOutputFromFile(filename).getContent();
};
function includeRaw(filename) {
return HtmlService.createTemplateFromFile(filename).getRawContent();
}
在我的template.html 中,我有
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<?!= include('mystylesheet'); ?>
<?!= includeRaw('Billets_JS'); ?>
</head>
<body> ...(more body)
<select id="optionListYear" onchange="setFormList()">
<option>Option 1</option>
<option>Option 2</option>
</select>
</body>
</html>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js">
</script>
<script>
function setFormList() {
alert("In setFormList");
MyNEwFunction();
}
</script>
我還嘗試了 JavaScript 文件的直接 include() 函數
Billets_JS有這個:
<script>
alert("Script included!");
// This code in this function runs when the page is loaded IF in the initial html file.
$(function() {
alert("In the intial function");
});
function MyNewFunction() {
alert("In My New Function");
}
</script>
我可以只加載腳本(“Billets_JS”)來加載 HTML 文件。 如果我有一個警報(); 在此包含文件中的任何函數之外的行,例如所示的,該行運行。 所以我收到一個警告框,上面寫着“包含腳本!” 但不是“在初始功能中”的那個。
不過,我似乎無法以這種方式調用 MyNewFunction()。 我使用了 Code.gs 中的兩個 Include 函數
有什么方法可以加載腳本,無需將其全部放入初始加載的文件中即可運行? 只需將函數移動到初始加載的文件即可,但我寧願將它們分開。
您的問題是由於加載 JavaScript 腳本的順序; 由於Billets_JS
依賴於 jQuery,它應該在它之后加載。
只需移動:
<?!= includeRaw('Billets_JS'); ?>
緊隨其后出現:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js">
</script>
如果您想對此積極主動,您可以在Billets_JS
腳本的頂部檢查 jQuery 的可用性,如下所示:
if (typeof jQuery == 'undefined') {
alert("No jQuery");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.