輕鬆建立免費資料庫與RESTful-API服務

在網頁開發過程中,大多需要一個後端服務,提供開發者取得或儲存資料,以確認前端網頁寫法是否正確,大多情況之下均是透過本地端執行編譯後端服務。但若應用場景擴及至外網環境時,後端伺服器的架設成本就會變的相當之高(),常見的方式多為使用免費/付費的虛擬主機(Virtual Host)或是使用Google app Engine這類的應用程式代管平台,這對於只是要單純確認前端程式是否有誤的新手小白來說過於麻煩,因此下列將利用Google apps script,建立簡易型的資料存取API 服務。

什麼是Google apps script ?

簡單來說就是Google透過基於javascript的語法,將Google家中多數的服務進行串聯,提供使用者進行客製化的服務使用。目前在使用上多為免費,雖說在呼叫次數上有額度限制,但對於一般非商業使用者是綽綽有餘的。

如何開始?

建立Google試算表

  1. 首先在Google雲端硬碟中隨意新增的資料夾,並新增一個「Google試算表」。

熟悉Google Apps Script編輯器

  1. 進入Google試算表 後,點選工具 -> 指令碼編輯器,隨後系統將會將你導至Google Apps Script的編輯頁面,我們可以先針對左上方的專案名稱進行編輯,改成自己喜歡的名稱。

  2. 常用功能如下圖所示,A區為程式碼編輯區塊,我們可以在此撰寫程式碼相關邏輯或呼叫Google服務,如試算表、雲端硬碟、翻譯等日常生活中常見的谷歌服務;B選項為主編輯頁面,在此頁面可進行方法偵錯與程式碼發佈;C為觸發條件設定區,簡單來說就是可以在固定時間執行特定方法,如在每個交易日13:30過後,將今日股市收盤價儲存等,日常性的固定操作;D為該專案整體服務的紀錄檔(logs),在此可以查看所有的方法執行紀錄。

    開始寫程式囉!

  • 基本迴圈
    請在A區撰寫下列程式碼,按下儲存鍵選取hello方法並按下執行,即可看到10次「Hello Google Apps Script」。

迴圈程式碼範例

1
2
3
4
5
6
function hello(){
for (var i = 0; i < 10; i++) {
console.log(`Hello Google Apps Script:${i}`);
}
}

  • 建立例外訊息查看機制
    在開發Api服務時往往會遇到意料之外的情形,此時就需要透過try…catch機制取得錯誤訊息,方便後續開發除錯使用,下列為try..catch的基本寫法。

例外程式碼範例

1
2
3
4
5
6
7
8
9
10
11
12

function doGet(e){
try{
throw new Error('發生例外狀況');//模擬系統產生例外狀況
var data ={"Message":"Hello World!"};
console.log(data);
return ContentService.createTextOutput(JSON.stringify(data))
.setMimeType(ContentService.MimeType.JSON);
}catch(err){
console.error(err);//顯示錯誤訊息
}
}

API服務建立

API程式方法撰寫

Google Apps Script的API接口預設方法為「doGet、doPost、doPut與doDelete」,因此我們可以先透過下列程式碼,撰寫RESRful GET Type的API。

API服務範例

1
2
3
4
5
6
7
8
9
10
function doGet(e){
try{
var data ={"Message":"Hello World!"};//模擬取的的資料
console.log(data);
return ContentService.createTextOutput(JSON.stringify(data))
.setMimeType(ContentService.MimeType.JSON); //將文字轉為JSON格式
}catch(err){
console.error(err);//顯示錯誤訊息
}
}

進行部署作業

點選右上角部署 &rarr; 新增部署作業 &rarr; 設定 &rarr; 勾選「網頁應用程式」、「API執行檔」 &rarr; 部署,即可完成部署,並會取得一組網址,我們將其複製貼到瀏覽器中即可得到我們要的答案。



取的JSON格式的資料

讀取Google 試算表資料

在這邊我們要將doGet方法中的data改成試算表中的資料,首先我們先將下表資料複製到試算表中。

Id Name Class
1 Jim A
2 Tom A
3 Pop B
4 yam B
5 lol B
6 Aoo C
7 Voo C

接下來我們將目光移到試算表的網址中,將紅框處的部分複製下來,他們分別是試算表活頁簿的ID,後續我們將會透過他搜尋我們要的資料。

引用試算表服務

由於我們要使用Google試算表的功能與服務,因此我們要點選「服務」,並新增「Google Sheets API」服務,提供本專案可以使用的服務。

透過Apps Script讀取Google試算表資料

接下來請將下列程式碼貼至你們的專案當中。

讀取Google試算表範例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
///讀取測試
function readSheetTest(){
var sheetId='輸入試算表編號';
console.log(GetSheetData(sheetId, '工作表1', '!A1:C'));
}

///依試算表編號與範圍讀取資料
function GetSheetData(sheetId, sheetName, range) {
var spreadsheetId = sheetId;
var rangeName = `${sheetName}${range}`;
var values = Sheets.Spreadsheets.Values.get(spreadsheetId, rangeName).values;
if (!values) {
return "No data fond in google sheet";
}
return values;
}

撰寫完成並按下儲存鍵後,執行readSheetTest方法,剛剛在Google試算表中撰寫的資料全部都被拉出來了,我們只要將這個方法與上述API部署方法相互結合即可透過API服務取得資料,下篇文章將會分享儲存資料的寫法。

完整程式碼

code.gs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
var _sheetId='輸入你的試算表ID';

function doGet(e){
try{
var data =GetSheetData(_sheetId, '工作表1', '!A1:C');//模擬取的的資料
console.log(data);
return ContentService.createTextOutput(JSON.stringify(data))
.setMimeType(ContentService.MimeType.JSON); //將文字轉為JSON格式
}catch(err){
console.error(err);//顯示錯誤訊息
}
}

function hello(){
for (var i = 0; i < 10; i++) {
console.log(`Hello Google Apps Script:${i}`);
}
}

function readSheetTest(){
console.log(GetSheetData(_sheetId, '工作表1', '!A1:C'));
}


function GetSheetData(sheetId, sheetName, range) {
var spreadsheetId = sheetId;
var rangeName = `${sheetName}${range}`;
var values = Sheets.Spreadsheets.Values.get(spreadsheetId, rangeName).values;
if (!values) {
return "No data fond in google sheet";
}
return values;
}

0%