HTML Service:最佳做法

透過 HTML 服務建立使用者介面的模式,有許多相同的模式 和其他網頁開發工作一樣簡單不過 或在其他情況下適用的 即可。以下將說明導入廣告活動時 開發自己的 HTML-服務使用者介面

分開 HTML、CSS 和 JavaScript

將所有 HTML、CSS 和 JavaScript 程式碼集中在一個檔案中,您的專案就能派上用場 難以閱讀及開發雖然 Apps Script 要求將用戶端程式碼放在 .html 檔案中,但您仍可將 CSS 和用戶端 JavaScript 分開至不同的檔案,然後透過自訂函式將這些檔案納入主要 HTML 頁面。

下方範例會在include() 匯入 Stylesheet.html 和 JavaScript.html 檔案內容的 Code.gs 檔案 並貼到 Page.html 檔案中使用以下方式呼叫時: 列印指令碼 這個函式會將指定的檔案內容匯入目前的檔案。通知 納入的檔案內含 <style><script> 標記,因為 都是 HTML 程式碼片段,不是單純的 .css 或 .js 檔案。

Code.gs

function doGet(request) {
  return HtmlService.createTemplateFromFile('Page')
      .evaluate();
}

function include(filename) {
  return HtmlService.createHtmlOutputFromFile(filename)
      .getContent();
}

Page.html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <?!= include('Stylesheet'); ?>
  </head>
  <body>
    <h1>Welcome</h1>
    <p>Please enjoy this helpful script.</p>
    <?!= include('JavaScript'); ?>
  </body>
</html>

Stylesheet.html

<style>
p {
  color: green;
}
</style>

JavaScript.html

<script>
window.addEventListener('load', function() {
  console.log('Page is loaded');
});
</script>

以非同步方式載入資料,而非在範本中載入資料

範本 HTML 可讓您快速 建構簡易介面,但應限制使用,確保 UI 回應式範本中的程式碼會在頁面載入時執行一次 在處理作業完成之前,系統不會將任何內容傳送給用戶端。如果在 SCRIPTLET 程式碼中執行長時間運作的作業,可能會導致 UI 速度變慢。

使用 Scriptlet 標記進行快速的一次性工作,例如加入其他內容 或是設定靜態價值所有其他資料應使用 google.script.run 呼叫。 以這種非同步方式編寫程式雖然較為困難,但可讓 UI 載入速度加快,並有機會向使用者顯示旋轉圖示或其他載入訊息。

錯誤 - 載入範本

<p>List of things:</p>
<? var things = getLotsOfThings(); ?>
<ul>
  <? for (var i = 0; i < things.length; i++) { ?>
    <li><?= things[i] ?></li>
  <? } ?>
</ul>

正確 - 以非同步方式載入

<p>List of things:</p>
<ul id="things">
    <li>Loading...</li>
</ul>

<script
src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">
</script>
<script>
// The code in this function runs when the page is loaded.
$(function() {
  google.script.run.withSuccessHandler(showThings)
      .getLotsOfThings();
});

function showThings(things) {
  var list = $('#things');
  list.empty();
  for (var i = 0; i < things.length; i++) {
    list.append('<li>' + things[i] + '</li>');
  }
}
</script>

使用 HTTPS 載入資源

如果您的網頁是使用較新的 IFRAME 提供, 沙箱模式,包括 未使用 HTTPS 提供的 JavaScript 或 CSS 檔案會導致錯誤,例如 下方列舉一個函式

複合型內容:系統透過 HTTPS 載入「https://...」頁面,但要求不安全的指令碼「http://...」。已封鎖這項要求; 內容就必須透過 HTTPS 提供

大多數熱門的程式庫都支援 HTTP 和 HTTPS,因此通常會在切換時 您只需在網址後方插入並貼到網址中。

使用 HTML5 文件類型宣告

如果網頁是使用較新的 IFRAME 沙箱模式提供服務,請務必在 HTML 檔案頂端加入下列程式碼片段。

<!DOCTYPE html>

這個文件類型宣告會告訴瀏覽器,您是為新式瀏覽器設計網頁,因此不應使用相容模式轉譯網頁。即使不打算 來使用現代 HTML5 元素或 JavaScript API,這將 確保網頁正確顯示

最後載入 JavaScript

許多網頁開發人員都建議在網頁底部載入 JavaScript 程式碼 增加回應速度,但這對於 HTML 程式碼而言更加重要 課程中也會快速介紹 Memorystore 這是 Google Cloud 的全代管 Redis 服務如果將 <script> 標記移至網頁結尾,就能 HTML 程式碼 也就是在處理 JavaScript 之前轉譯內容,因此您可以呈現 旋轉圖示或其他訊息給使用者

利用 jQuery

jQuery 是一個熱門的 JavaScript 程式庫, 許多常見的網頁開發工作