[GAS]Serverless簡易後端實現(1/2)

Google Apps Script,是Google提供的Serverless的服務,讓你不需要自己架後端,就可以擁有後端和類資料庫的功能,而且是免費使用,看了是不是很心動呢?但是容筆者提醒一下,俗話說的好,免錢的最貴,雖說是免費但還是有許多限制,諸如每日呼叫次數、執行時間等等,拿來玩玩可以,用在商業可是會翻船的。

本系列文會介紹基本操作方法,要更詳細的客官只能去啃官方文件

  1. Google Apps Script環境建置
  2. GAS後端如何被前端呼叫
  3. 如何Debug
  4. 如何存取試算表內容

Google Apps Script環境建置

首先打開你的Google雲端硬碟,有兩種方式可以新增,如果你要用試算表當作資料庫使用,直接新增試算表即可

若不需要,則直接新增Google Apps Script ,找不到的話,選擇更多->連結應用程式,搜尋Google Apps Script

之後就會看到程式碼編輯介面了,沒錯!就是前端最熟悉的javascript

GAS後端如何被前端呼叫

後續會有一個發布的動作,發布完會產生一段https網址,前端呼叫的方式很簡單,對網址使用一般的GET和POST呼叫就可以了,不過GAS這邊就比較限定了,function 名稱有固定

/**
* 這裡接收GET
*/
function doGet(e){
  //e.parameter裡面放的就是傳進來的key-value
  var action = e.parameter.action;
  switch(action){
    case 'foo':
      //do something
      break;
  }
  return ContentService.createTextOutput('Receive Get');
}
/**
* 這裡接收POST
*/
function doPost(e){
  var name = e.parameter.name;
  var seconds = e.parameter.seconds;
  return ContentService.createTextOutput(JSON.stringify({name: name, seconds: seconds}))
      .setMimeType(ContentService.MimeType.JSON);
}

可以看到名稱是固定的,如果要做很多事情,自己依照參數值分不同function執行比較易讀,return的部分,有三種

//字串
return ContentService.createTextOutput('string');

//HTML
return HtmlService.createHtmlOutput('<p>html</p>');

//JSON 需先將object轉為json字串
return ContentService.createTextOutput(JSON.stringify(object))
      .setMimeType(ContentService.MimeType.JSON);

完成程式碼後,除了儲存以外,還要進行發布


之後就可以用Postman之類的工具來測試了,記得每次修改都要重新發布一次,才會生效

如何Debug

Debug是很重要的一環,不然怎麼知道有沒有正常運行,既然是javascript,當然也支援console.log()囉,不過他不是顯示在瀏覽器的的開發者工具,而是另外的介面,點選上方 “查看"->"Stackdriver Logging",接著點Apps Script資訊主頁,然後可以單獨測試某個function,就看到輸出了,真是一番折騰~

如何存取試算表內容

首先需要取得試算表的網址或者ID,ID在網址中間,/d/之後,/edit之前

var SpreadSheet = SpreadsheetApp.openByUrl(url);
var SpreadSheet = SpreadsheetApp.openById(id);

//取得工作表
var Sheet = SpreadSheet.getSheets()[0];
var Sheet = SpreadSheetgetSheetByName(SheetName);

//getSheetValues(startRow, startColumn, numRows, numColumns),從1開始
//讀取特定欄位,假設該欄位=0,回傳值會是[[0.0]]
var value = getSheetValues(1, 1, 1, 1);
//讀取多欄位,假設值為A1=1,B1=2,A2=3,B2=4,回傳值為[[1.0, 2.0],[3.0, 4.0]]
var values = getSheetValues(1, 1, 2, 2);
//不知道資料有多少,可以取得最後一列或欄
var last_col = getLastColumn();
var last_row = getLastRow();

//設定欄位 Sheet.getRange(row, column).setValue('value')
Sheet.getRange(last_row+ 1, 1).setValue('A100');
Sheet.getRange(1, last_col + 1).setValue('N1');

到此為止,已經具備實現簡易後端的功能,甚至還有N個table可以操作,只要分sheet就好了,下一篇還會介紹一些更進階的功能,敬請期待~

參考來源

延伸閱讀

對「[GAS]Serverless簡易後端實現(1/2)」的一則回應

Add yours

發表迴響

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

WordPress.com 標誌

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

Google photo

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

Twitter picture

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

Facebook照片

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

連結到 %s

Create a website or blog at WordPress.com

向上 ↑

%d 位部落客按了讚: