簡體   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