如何在Google Sheet上設定Webhook

讓 Google Sheet 支援 Webhook 可以做些什麼?

如果平常需要蒐集以及對資料做一些運算及處理,Google Sheet 是個非常強大的服務,但跟 Excel 一樣,Google Sheet 正常的使用方法是必須透過 Key in 或是使用 Google Sheet API 來做資料內容的修改。但 Google Sheet API 使用上雖然強大但並不容易使用,有時候只是需要快速的從其他 App / Server / Web 把資料新增進去 Google Sheet 且不需要做一些複雜運算,同時也不是什麼重要的服務,這時候使用 API 就有點麻煩。今天就來介紹如何透過 Google Sheet 內建的指令寫一些簡單的邏輯讓別的服務可以透過 Post/Get 的方式來取得或新增 Google Sheet 中的資料。

指令碼編輯器

  1. 首先先從 Google Sheet 的某個檔案中 Tools –> Script Editor
  2. 會開啟一個新的分頁,然後先編輯既有的 .gs 檔,打入以下範例程式碼,存檔。
//this is a function that fires when the webapp receives a GET request
function doGet(e) {
  return ContentService.createTextOutput("get request");
}

//this is a function that fires when the webapp receives a POST request
function doPost(e) {
  return ContentService.createTextOutput("post request");
}
  • 接著發佈成網路應用程式(Web app),記得要設定相對應權限。

使用 Post 新增資料到 Google Sheet 中

先假設資料內容長得像以下格是,每次新增時都會在 Google Sheet 中新增內容並且上新增時間

{
  "user": "BCN",
  "message": "Hi webhook"
}

修改 doPost 指令

現在必須在剛剛寫的 .gs 檔案中的 doPost function 將這段 json 的內容解析出來並新增到 Google Sheet 中。

//this is a function that fires when the webapp receives a GET request
function doGet(e) {
  return ContentService.createTextOutput("get request");
}

//this is a function that fires when the webapp receives a POST request
function doPost(e) {
  var data = JSON.parse(e.postData.contents); // Get data from request.
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.appendRow([data.user, data.message, new Date()]);
  SpreadsheetApp.flush();
  return ContentService.createTextOutput("post request");
}

這樣就可以使用 Postman 或是其他測試工具將資料寫入 Google Sheet 中了。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s