Title1

Title2

Title3

6. Web 服務&API 服務

doGet()

  1. doGet() 用於處理 HTTP GET 請求。
  2. 當您部署一個 Google Apps Script 項目為 Web 應用程序(Web App)時,您可以為它提供一個 URL,任何人都可以通過在瀏覽器中輸入這個 URL 來訪問您的 Web 應用程序。
  3. doGet() 通常用於向 Web 應用程序提供信息,例如通過 URL 的查詢參數提供的數據。
  4. 例如,您可以使用 doGet() 創建一個簡單的 Web 表單,當用戶填寫表單時,它將收集數據並將其保存到 Google Sheets 中。

doPost()

  1. doPost() 用於處理 HTTP POST 請求。
  2. POST 請求通常用於向 Web 服務提交數據,例如表單提交。
  3. 通常情況下,您可以使用 doPost() 接收和處理從客戶端(通常是 Web 表單)發送的數據。
  4. 例如,當用戶在 Web 表單中提交了一個訂單時,您可以使用 doPost() 來接收該訂單的數據,然後將其處理並保存到 Google Sheets 或其他目的地。

總之,doGet()doPost() 是用於創建自定義 Web 服務的關鍵功能,它們使您能夠在 Google Apps Script 中處理來自網絡的請求,並根據需要進行相應的處理和數據操作。這在自動化工作流程、創建自定義應用程序和與外部服務集成時非常有用。

部署為網路應用程式

  1. 「部署 / 管理部署作業」

     
  2. 建立部署作業:第一次操作

     
  3. 部署作業類型:網頁應用程式

     
  4. 網頁應用程式

     
  5. 版本:建立新版本。未來編輯部署時,也一樣須選這個選項
    執行身份:我。這樣網路上的訪客,才能用我的身份寫入、讀取試算表的資料
    誰可以存取:所有人

     
  6. 授予存取權

     
  7. 得到應用程式網址

     
  8. 程式碼有異動,請再次進行「部署 / 編輯」

     
  9. 記得版本一定要選「建立新版本」

     
  10. 如此操作,部署出來的網址,才不會變動

在 程式碼.gs 建立 doGet(e)函式

function doGet(e){
  console.log(e);

}
  1. 記得重新部署,然後拿網址去執行,應該會得到一個錯誤畫面,「指令碼已完成,但未傳回任何值。」
  2. 「左側選項 / 執行項目」:找最上層的 doGet 看 log

     
  3. 如上圖,得知當有人請求 doGet 時,它會傳回一個物件,其屬性如圖。常用的是 parameter

API 服務

  1. ContentService.createTextOutput(arr):是 Google Apps Script 提供的一個方法,用於創建一個文本輸出對象。這個對象可以包含你希望作為 HTTP 響應的內容。arr 在這裡是一個 JavaScript 陣列或物件,代表你想要返回給客戶端的數據。
  2. setMimeType(ContentService.MimeType.JSON): 這一部分用於設置文本輸出對象的 MIME 類型為 JSON。MIME 類型是一種標識數據的方式,JSON 的 MIME 類型是 application/json。通過將 MIME 類型設置為 JSON,你告訴客戶端收到的內容是 JSON 格式的數據。
  3. 總之,這段代碼的主要目的是將一個 JavaScript 陣列(或物件)轉換為 JSON 格式的文本輸出,並將其設置為 HTTP 響應的內容。這在使用 Google Apps Script 構建 Web 服務或 API 時非常常見,因為它允許你將數據以 JSON 格式返回給客戶端,以便客戶端應用程序可以解析和使用該數據。
  4. 測試程式碼:程式碼有異動,請重新部署。或用測試部署操作
    網址?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 陣列或物件
    }
    
  5. 將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 陣列或物件
      }
    }

     

  6. 請確認結果