簡體   English   中英

HTML 文件中包含的腳本無法在 Google Apps Script HTMLService 中運行

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM