鐵人賽-Google Apps Script整合運用
doGet():
- doGet() 用於處理 HTTP GET 請求。
- 當您部署一個 Google Apps Script 項目為 Web 應用程序(Web App)時,您可以為它提供一個 URL,任何人都可以通過在瀏覽器中輸入這個 URL 來訪問您的 Web 應用程序。
- doGet() 通常用於向 Web 應用程序提供信息,例如通過 URL 的查詢參數提供的數據。
- 例如,您可以使用 doGet() 創建一個簡單的 Web 表單,當用戶填寫表單時,它將收集數據並將其保存到 Google Sheets 中。
- doPost() 用於處理 HTTP POST 請求。
- POST 請求通常用於向 Web 服務提交數據,例如表單提交。
- 通常情況下,您可以使用 doPost() 接收和處理從客戶端(通常是 Web 表單)發送的數據。
- 例如,當用戶在 Web 表單中提交了一個訂單時,您可以使用 doPost() 來接收該訂單的數據,然後將其處理並保存到 Google Sheets 或其他目的地。
總之,doGet() 和 doPost() 是用於創建自定義 Web 服務的關鍵功能,它們使您能夠在 Google Apps Script 中處理來自網絡的請求,並根據需要進行相應的處理和數據操作。這在自動化工作流程、創建自定義應用程序和與外部服務集成時非常有用。
部署為網路應用程式- 「部署 / 管理部署作業」
- 建立部署作業:第一次操作
- 部署作業類型:網頁應用程式
- 網頁應用程式
- 版本:建立新版本。未來編輯部署時,也一樣須選這個選項
執行身份:我。這樣網路上的訪客,才能用我的身份寫入、讀取試算表的資料
誰可以存取:所有人
- 授予存取權
- 得到應用程式網址
- 程式碼有異動,請再次進行「部署 / 編輯」
- 記得版本一定要選「建立新版本」
- 如此操作,部署出來的網址,才不會變動
在 程式碼.gs 建立 doGet(e)函式
function doGet(e){ console.log(e); }- 記得重新部署,然後拿網址去執行,應該會得到一個錯誤畫面,「指令碼已完成,但未傳回任何值。」
- 「左側選項 / 執行項目」:找最上層的 doGet 看 log
- 如上圖,得知當有人請求 doGet 時,它會傳回一個物件,其屬性如圖。常用的是 parameter
- ContentService.createTextOutput(arr):是 Google Apps Script 提供的一個方法,用於創建一個文本輸出對象。這個對象可以包含你希望作為 HTTP 響應的內容。arr 在這裡是一個 JavaScript 陣列或物件,代表你想要返回給客戶端的數據。
- setMimeType(ContentService.MimeType.JSON): 這一部分用於設置文本輸出對象的 MIME 類型為 JSON。MIME 類型是一種標識數據的方式,JSON 的 MIME 類型是 application/json。通過將 MIME 類型設置為 JSON,你告訴客戶端收到的內容是 JSON 格式的數據。
- 總之,這段代碼的主要目的是將一個 JavaScript 陣列(或物件)轉換為 JSON 格式的文本輸出,並將其設置為 HTTP 響應的內容。這在使用 Google Apps Script 構建 Web 服務或 API 時非常常見,因為它允許你將數據以 JSON 格式返回給客戶端,以便客戶端應用程序可以解析和使用該數據。
- 測試程式碼:程式碼有異動,請重新部署。或用測試部署操作
網址?op=getSheetData&sheet=day2 function doGet(e){ console.log(e); let arr = JSON.stringify(e);//將資料 打包成 json格式 return ContentService.createTextOutput(arr).setMimeType(ContentService.MimeType.JSON);//先將資料轉成JSON 字符串,再透過setMimeType()將其改成JSON 陣列或物件 } - 將day2 工作表的資料渲染出來
function doGet(e) {
// console.log(e);
let sheet = e.parameter.sheet;
if (sheet === 'day2') {
let day2Data = get_data_custom();
let arr = JSON.stringify(day2Data);//將資料 打包成 json格式
return ContentService.createTextOutput(arr).setMimeType(ContentService.MimeType.JSON);//先將資料轉成JSON 字符串,再透過setMimeType()將其改成JSON 陣列或物件
}else{
let arr = JSON.stringify(e);//將資料 打包成 json格式
return ContentService.createTextOutput(arr).setMimeType(ContentService.MimeType.JSON);//先將資料轉成JSON 字符串,再透過setMimeType()將其改成JSON 陣列或物件
}
}
- 請確認結果