如果您建構指令碼的使用者介面,可以將指令碼發布為網頁應用程式。舉例來說,讓使用者利用網頁應用程式安排預約時段的指令碼會是最理想的方式。
獨立指令碼和繫結至 Google Workspace 應用程式的指令碼都能轉換為網頁應用程式,只要符合以下規定即可。
網頁應用程式相關規定
如果指令碼符合下列條件,即可發布為網頁應用程式:
- 其中包含
doGet(e)
或doPost(e)
函式。 - 這個函式會傳回 HTML 服務
HtmlOutput
物件或內容服務TextOutput
物件。
要求參數
當使用者造訪應用程式或程式傳送 HTTP GET
要求時,Apps Script 會執行 doGet(e)
函式。當程式傳送 HTTP POST
要求時,Apps Script 會改為執行 doPost(e)
。在這兩種情況下,e
引數都代表可包含任何要求參數相關資訊的事件參數。事件物件的結構如下表所示:
欄位 | |
---|---|
e.queryString |
網址中查詢字串部分的值;如果沒有指定查詢字串,則值為 name=alice&n=1&n=2 |
e.parameter |
與要求參數對應的鍵/值組合物件。 如果參數包含多個值,系統只會傳回第一個值。 {"name": "alice", "n": "1"} |
e.parameters |
與 {"name": ["alice"], "n": ["1", "2"]} |
e.pathInfo |
|
e.contextPath |
未使用,一律為空白字串。 |
e.contentLength |
POST 要求的要求主體長度;如果是 GET 要求,則為 332 |
e.postData.length |
與「 332 |
e.postData.type |
POST 主體的 MIME 類型 text/csv |
e.postData.contents |
POST 主體的內容文字 Alice,21 |
e.postData.name |
一律為「postData」值 postData |
舉例來說,您可以將 username
和 age
等參數傳遞至網址,如下所示:
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
}
將指令碼部署為網頁應用程式
如要將指令碼部署為網頁應用程式,請按照下列步驟操作:
- 在指令碼專案右上方,依序按一下「部署」 >「新增部署作業」。
- 依序點選「選取類型」旁的「啟用部署類型」 >「網頁應用程式」。
- 在「部署設定」下的欄位中輸入網頁應用程式的相關資訊。
- 按一下「部署」。
能夠與想使用應用程式的使用者分享網頁應用程式網址,但前提是已獲得對方存取權。
測試網頁應用程式部署作業
如要以網頁應用程式形式測試指令碼,請按照下列步驟操作:
- 在指令碼專案右上方,依序點選「部署」>「測試部署作業」。
- 依序點選「選取類型」旁的「啟用部署類型」圖示 >「網頁應用程式」。
- 按一下網頁應用程式網址下方的「複製」。
將網址貼到瀏覽器中,並測試網頁應用程式。
這個網址以
/dev
結尾,只有具備指令碼編輯權限的使用者才能存取。這個應用程式的執行個體一律會執行最近儲存的程式碼,僅供在開發期間進行測試。
權限
網頁應用程式的權限會因選擇執行應用程式的方式而異:
- 以我的身分執行應用程式:在此情況下,無論誰存取網頁應用程式,指令碼一律會以您 (也就是指令碼擁有者) 的方式執行。
- 以存取網頁應用程式的使用者身分執行應用程式:在此情況下,指令碼會在使用網頁應用程式的活躍使用者身分下執行。這項權限可讓網頁應用程式在使用者授權存取時,顯示指令碼擁有者的電子郵件。
在 Google 協作平台中嵌入網頁應用程式
您必須先部署網頁應用程式,才能在 Google 協作平台中嵌入網頁應用程式。您也需要從 Deploy
對話方塊取得「Deployed URL」(部署的網址)。
如要將網頁應用程式嵌入網站頁面,請按照下列步驟操作:
- 開啟要新增網頁應用程式的協作平台頁面。
- 依序選取「插入」>「嵌入網址」。
- 貼上網頁應用程式網址,然後按一下「新增」。
網頁應用程式會顯示在網頁預覽畫面的頁框中。當您發布網頁時,網站檢視者可能需要先授權該網頁應用程式,網頁應用程式才能正常執行。未經授權的網頁應用程式會向使用者顯示授權提示。
網頁應用程式和瀏覽器歷史記錄
建議您讓 Apps Script 網頁應用程式模擬多頁應用程式,或使用透過網址參數控制的動態 UI。為達到這個目標,您可以定義狀態物件來代表應用程式的 UI 或網頁,並在使用者瀏覽應用程式時,將狀態推送到瀏覽器記錄。此外,您也可以監聽記錄事件,讓網頁應用程式在使用者使用瀏覽器按鈕來回瀏覽時,顯示正確的 UI。在載入時查詢網址參數,您就可以讓應用程式根據這些參數動態建構 UI,讓使用者以特定狀態啟動應用程式。
Apps Script 提供兩個非同步用戶端 JavaScript API,可協助您建立連結至瀏覽器記錄的網頁應用程式:
google.script.history
提供各種方法,允許針對瀏覽器記錄變更進行動態回應。這包括:將狀態 (可定義的簡單物件) 推送到瀏覽器記錄、取代記錄堆疊中的頂端狀態,以及設定事件監聽器回呼函式來回應記錄變更。google.script.url
可讓您擷取目前網頁的網址參數和網址片段 (如果有的話)。
這些記錄 API 僅適用於網頁應用程式。但不支援側欄、對話方塊或外掛程式。針對嵌入 Google 協作平台的網頁應用程式,也不建議使用此功能。