把Google sheet變成JSON Api伺服器

JSON Api伺服器臨時要測試使用找不到,這裡提供一個3分鐘的版本。

先進入Google sheet開一份新的sheet,然後在上面的選單找到 擴充功能→Apps Script。


在Apps Script編輯器裡面輸入下面的程式碼

function doGet(req) {
//參數群
const sheetName = req.parameter.sheet || '';
const fieldName = req.parameter.field || '';

let jsonText;
try {
const book = SpreadsheetApp.getActiveSpreadsheet();
let sheet = book.getSheetByName(sheetName);
if (null == sheet) {
sheet = book.getSheets()[0];
}
const values = sheet.getDataRange().getValues();
jsonText = JSON.stringify(fieldName ? { [fieldName]: values } : values);
}
catch (e) {
jsonText = JSON.stringify({
status: 500,
message: `error:${e.stack || e}`,
});
}
return ContentService.createTextOutput()
.setContent(jsonText)
.setMimeType(ContentService.MimeType.JSON);
}
  • 參數sheet是指定表的名稱,如果沒有指定就是找第一張表
  • 參數field指定是回傳成json物件的欄位名稱

部署

編輯器右上角有一個[部屬]按鈕,部屬→新增部屬作業,跳出的選單直接右下的[部屬],你將會得到 網頁應用程式的網址,以下舉例

https://script.google.com/macros/s/AKfycbxyCpiFu_YYmWeNFzlG2f6u_SY9onJrVMExlD3bgR01oyD7Bdt_asTet50FpIjQLPblNQ/exec


我們先在sheet裡頭輸入一些資料如下


使用

再到瀏覽器上輸入網頁應用程式的網址,你會看到一個json的回傳結果

[["","",""],[1,2,3],["aa","sss","aa"]]

參數field

如果你不喜歡上面的陣列形式,可以用參數field指定名稱

https://script.google.com/macros/s/AKfycbxyCpiFu_YYmWeNFzlG2f6u_SY9onJrVMExlD3bgR01oyD7Bdt_asTet50FpIjQLPblNQ/exec?field=data

{"data":[["","",""],[1,2,3],["aa","sss","aa"]]}

參數sheet

如果你有sheet裡頭建立一張新的表,則可以用sheet指定新表的名稱

https://script.google.com/macros/s/AKfycbxyCpiFu_YYmWeNFzlG2f6u_SY9onJrVMExlD3bgR01oyD7Bdt_asTet50FpIjQLPblNQ/exec?sheet=新表的名稱


留言