網路應用程式

如果您為指令碼建立使用者介面,可以將指令碼發布為網頁應用程式。舉例來說,如果指令碼可讓使用者與支援團隊成員安排預約,最好將其呈現為網頁應用程式,方便使用者直接透過瀏覽器存取。

獨立指令碼繫結至 Google Workspace 應用程式的指令碼都可以轉換為網頁應用程式,前提是須符合下列規定。

網頁應用程式相關規定

只要指令碼符合下列規定,即可發布為網頁應用程式:

要求參數

當使用者造訪應用程式或程式傳送 HTTP GET 要求時,Apps Script 就會執行 doGet(e) 函式。當程式傳送 HTTP POST 要求給應用程式時,Apps Script 會改為執行 doPost(e)。在這兩種情況下,e 引數都代表一個事件參數,可包含任何要求參數的相關資訊。事件物件的結構如下表所示:

欄位
e.queryString

網址查詢字串部分的值,如果未指定查詢字串,則為 null

name=alice&n=1&n=2
e.parameter

與要求參數相對應的鍵/值組合物件。如果參數有多個值,系統只會傳回第一個值。

{"name": "alice", "n": "1"}
e.parameters

類似 e.parameter 的物件,但每個鍵都有值陣列

{"name": ["alice"], "n": ["1", "2"]}
e.pathInfo

/exec/dev 後面的網址路徑。舉例來說,如果網址路徑的結尾為 /exec/hello,則路徑資訊為 hello

e.contextPath 未使用,一律為空字串。
e.contentLength

POST 要求的長度,或 GET 要求的 -1

332
e.postData.length

e.contentLength 相同

332
e.postData.type

POST 主體的 MIME 類型

text/csv
e.postData.contents

POST 主體的內容文字

Alice,21
e.postData.name

值一律為「postData」

postData

舉例來說,您可以將 usernameage 等參數傳遞至網址,如下所示:

https://script.google.com/.../exec?username=jsmith&age=21

接著,您可以顯示參數,如下所示:

function doGet(e) {
  var params = JSON.stringify(e);
  return ContentService.createTextOutput(params).setMimeType(ContentService.MimeType.JSON);
}

在上述範例中,doGet(e) 傳回下列輸出內容:

{
  "queryString": "username=jsmith&age=21",
  "parameter": {
    "username": "jsmith",
    "age": "21"
  },
  "contextPath": "",
  "parameters": {
    "username": [
      "jsmith"
    ],
    "age": [
      "21"
    ]
  },
  "contentLength": -1
}

將指令碼部署為網頁應用程式

如要將指令碼部署為網路應用程式,請按照下列步驟操作:

  1. 在指令碼專案右上方,依序點選「部署」>「新增部署作業」
  2. 按一下「選取類型」旁邊的「啟用部署類型」 >「網頁應用程式」
  3. 在「部署設定」下方的欄位中,輸入網頁應用程式相關資訊。
  4. 按一下「部署」

將網頁應用程式網址分享給您要使用應用程式的對象,前提是您已將其存取權授予應用程式。

測試網頁應用程式部署作業

如要以網頁應用程式形式測試指令碼,請按照下列步驟操作:

  1. 在指令碼專案右上方,依序點選「部署」>「測試部署」
  2. 在「選取類型」旁邊,依序點選「啟用部署類型」圖示 >「網頁應用程式」
  3. 按一下網頁應用程式網址下方的「複製」
  4. 在瀏覽器中貼上網址,然後測試網路應用程式。

    這個網址結尾是 /dev,只有具備指令碼編輯權限的使用者才能存取。這個應用程式執行個體一律會執行最近儲存的程式碼,且僅供開發期間測試使用。

權限

網頁應用程式的權限會因您選擇執行應用程式的方式而有所不同:

  • 以我自己的身分執行應用程式:在這種情況下,無論誰存取網路應用程式,指令碼一律會以指令碼擁有者的身分執行。
  • 以存取網路應用程式的使用者身分執行應用程式:在這種情況下,指令碼會以使用網路應用程式的有效使用者身分執行。當使用者授權存取權時,網路應用程式會透過這個權限方法顯示指令碼擁有者的電子郵件地址。

在 Google 協作平台中嵌入網頁應用程式

如要在 Google 協作平台中嵌入網頁應用程式,必須先部署該應用程式。您也需要 Deploy 對話方塊中的「Deployed URL」

如要將網頁應用程式嵌入 Sites 頁面,請按照下列步驟操作:

  1. 開啟要新增網頁應用程式的「網站」頁面。
  2. 依序選取「插入」>「嵌入網址」
  3. 貼上網頁應用程式網址,然後按一下「新增」

網頁預覽畫面中的框架會顯示網頁應用程式。發布網頁時,網站觀眾可能需要先授權網頁應用程式,才能正常執行。未經授權的網頁應用程式會向使用者顯示授權提示。

網頁應用程式和瀏覽器記錄

建議您讓 Apps Script 網頁應用程式模擬多頁應用程式,或是透過網址參數控制的動態 UI 應用程式。為了妥善執行這項操作,您可以定義狀態物件來代表應用程式的 UI 或網頁,並在使用者瀏覽應用程式時,將狀態推送至瀏覽器記錄。您也可以監聽記錄事件,以便在使用者透過瀏覽器按鈕來回瀏覽時,讓網路應用程式顯示正確的 UI。您可以在載入時查詢網址參數,讓應用程式根據這些參數動態建構 UI,讓使用者以特定狀態啟動應用程式。

Apps Script 提供兩個非同步用戶端 JavaScript API,協助您建立與瀏覽器記錄連結的網頁應用程式:

  • google.script.history 提供方法,可讓瀏覽器歷史記錄變更時動態回應。這包括將狀態 (您可定義的簡單物件) 推送至瀏覽器記錄、取代記錄堆疊中的頂層狀態,以及設定事件監聽器回呼函式,以便回應記錄變更。

  • google.script.url 提供方法,可擷取目前網頁的網址參數和網址片段 (如有)。

這些歷史記錄 API 僅適用於網頁應用程式。側欄、對話方塊或外掛程式不支援這些模組。此外,也不建議用於 Google 協作平台內嵌的網頁應用程式中。