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