從零開始:Google Apps Script 中的 doGet 函數入門指南
更新日期: 2023 年 10 月 24 日
當你想藉由 Google Apps Script 創建自己的 Web 應用程序時,doGet 函數是其中的一個重要組成部分。
本文將從基本概念開始,然後深入解析 doGet 函數的使用方法、示例以及常見問題。
現在,讓我們一起開始學習 doGet 函數吧!
Google Apps Script 是什麼?
Google Apps Script 是一種基於 JavaScript 的「雲端程式語言」。
它主要有以下幾個特點:
基於雲端
Google Apps Script 在 Google 的伺服器上運行。
所以你不需要安裝任何東西,只需要一台裝有瀏覽器的電腦,就可以開始編程了。
基於 JavaScript
Google Apps Script 以 JavaScript 語法作為基礎。
除了一些 Apps Script 內建的函數及語法,基本的控制結構(例如,for 迴圈、if 語句等)和數據類型(例如,陣列、物件等)都與 JS 相同。
內建 Google 服務
Apps Script 提供了數十種內建服務(函數),你可以使用這些服務來操作 Google Workspace 的應用程序
例如 Google 文件、試算表、簡報,以及 Gmail、日曆、雲端硬碟等。
連接外部 API
除了內建的 Google 服務之外,你還可以使用 Apps Script 來連接到許多其他的 API
無論是公開的 REST API,還是私人的企業服務,只要它們支援 HTTP 連接,你都可以用 Apps Script 來與它們互動。
什麼是 Web 應用程式與 doGet 函數?
網路應用程式,是指一種運行在瀏覽器中的程式。
它可以讓使用者透過瀏覽器,與後端伺服器進行互動。
Google 讓你可以藉由 Google Apps Script 語言,在它的伺服器上,架設一個網路應用程式,並與 Google Workspace 內的服務互相串連。
其中, doGet 函數負責的工作,就是回應你的 Web 應用程式對 HTTP GET 的請求。
換句話說,當一個使用者訪問你的 Web 應用程式的 URL。
他的瀏覽器會發送一個請求(HTTP GET)到你的應用程式,然後你的 doGet 函數就會被調用,並產生一個對應的回應。
doGet 函數的基本形式如下:
function doGet() {
return HtmlService.createHtmlOutput('Hello, World!');
}
上述 doGet 函數,會回應伺服器的請求,並產生一個簡單的 HTML 頁面,該頁面上僅顯示 「Hello, World!」。
當然,實際上的 Web 應用程式中, doGet 函數通常會更複雜,並涉及到讀取數據庫的數據,或根據請求的網址參數,生成不同的 HTML 頁面等。
延伸閱讀:createTemplateFromFile() 函數的功能是什麼?
創建第一個 doGet 函數
以下實作一個簡單的示例,幫助你理解如何創建一個 doGet 函數。
首先,你需要登入你的 Google 帳戶,並進入 Apps Script 開發環境。
然後,點擊 「新建專案 」開始創建一個新的 Google Apps Script 專案。
在新的專案中,你會看到一個預設的 myFunction 函數。
我們可以將它刪除,並改為我們的 doGet 函數,如下:
function doGet() {
return HtmlService.createHtmlOutput('Hello, World!');
}
以上,我們創建了一個基本的 doGet 函數。
接下來,你需要「部署」(發佈到網路)你的 Web 應用程序,才能讓使用者訪問它。
要這麼做,你可以在 Apps Script 開發環境中選擇 「發佈」 ➡️ 「部署為 Web 應用程序」。
部署完成後,你將得到一個 URL,這就是你的 Web 應用程序的網址。
現在,你可以嘗試在瀏覽器中打開這個網址。
你應該可以看到你的 doGet 函數生成的 「Hello, World!」 頁面了。
doGet 函數的實例解析
在上述「Hello, World!」範例中,我們已經看到了一個簡單的 doGet 函數。
但在實際應用中,doGet 函數可能需要處理更複雜的情況。
例如,它可能需要讀取請求的參數,或者生成更複雜的 HTML 頁面。
接下來,我們以一個實例來解釋這些概念。
若我們想要創建一個 Web 應用程序。
該頁面可以接收一個名為 「name」的參數,並顯示一個包含 「Hello, [name]!”」的頁面。
以下是我們的 doGet 函數:
function doGet(e) {
let name = e.parameter.name;
let output = 'Hello, ' + name + '!';
return HtmlService.createHtmlOutput(output);
}
在上述函數中,我們首先取得了 URL 的 name 參數值。
接著,我們將這個名字加入到我們的輸出文字中,並返回一個 HTML 頁面。
因此,當你訪問你的 Web 應用程序的網址時,你可以在網址後面加上 「?name=YourName」 來設置 「name」參數。
例如,如果你的網址是:https://script.google.com/a/macros/yourdomain.com/s/yourscriptid/exec
你就可以訪問:https://script.google.com/a/macros/yourdomain.com/s/yourscriptid/exec?name=YourName, 並查看「Hello, YourName!」頁面。
doGet 函數的常見問題
在使用 doGet 函數創建 Web 應用程序時,你可能會遇到一些常見問題。
以下將列舉相關狀況並提供解決方法:
網頁返回 「Script function not found: doGet」
這個錯誤通常是指,你的 Apps Script 專案中沒有定義 doGet 函數。
請確保你的函數名稱拼寫正確,並且在 Apps Script 編輯器中,儲存了你的代碼。
讀取不存在的請求參數
讀取請求參數時出現 undefined 當你嘗試讀取一個不存在的請求參數時。
例如 e.parameter.nonexistentParam,你將會得到 undefined。在使用請求參數之前,建議先檢查它是否存在。
網頁返回 「You do not have permission to access the requested document.」
這個錯誤通常是因為你的 Web 應用程序,設置的「存取權限」過於嚴格。
在部署你的 Web 應用程序時,確保你選擇了適當的 「誰有存取權限」選項。
Web 應用程序內容未即時更新
如果你修改了 doGet 函數,可能需要重新部署你的 Web 應用程序才能看到改變。
當你在 「發佈」➡️「 部署為 Web 應用程序」 時,確保你選擇了一個「新的專案版本」。
doGet 函數處理時間過長
對於一般帳戶使用者,Apps Script 有一個執行時間的限制。
每個 HTTP 請求的執行時間,最長為 6 分鐘。
如果你的 doGet 函數,需要處理大量數據或複雜的操作。
你可能需要考慮優化你的程式碼,或者將一些處理過程分解為多個請求。
結語
希望透過這篇文章,讓你對 Google Apps Script 的 doGet 函數有了更深入的理解。
雖然 doGet 函數在一開始,可能看起來有點複雜。
但一旦你理解了它的工作原理和用途,你就可以開始利用它來創建各種有趣和強大的 Web 應用程序了。
最後,請記住,寫程式是一種不斷學習和實驗的過程。
不要害怕犯錯,因為每一個錯誤都是一個學習的機會。
參考學習資源
以下是一些你可以參考的 Google Apps Script 相關資源:
- Google Apps Script 官方文件:你可以在這裡找到 Apps Script 的所有功能和服務的詳細文件,包括 doGet 函數的詳細說明。
- Google Apps Script 教學:Google 提供了一些教學,幫助你開始使用 Apps Script 建立 Web 應用程序。
- Stack Overflow 的 Google Apps Script 分類:Stack Overflow 是一個很好的問答平台,你可以在這裡找到許多 Apps Script 的問題和答案。
- Google Apps Script 範例代碼:Google 在 GitHub 上提供了許多 Apps Script 的範例代碼,你可以從這些範例中學習如何使用 Apps Script。
透過這些資源,可以深化你對 Google Apps Script 的理解。