Node.js
API
Express.js
本站筆記已同步更新到我的個人網站囉! 歡迎參觀與閱讀,體驗不同的視覺感受!
當我們想要把資料放在Google Sheets上方便閱讀、計算等操作的時候,可以透過串接Google Sheets API製作、寫入資料。這裡介紹如何應用Node.js串接Google Sheets API,廢話不多說就開始實作吧!
首先,需要有Google憑證(credentials)才可以使用這個服務。
Select a project
> New Project
APIs and services
> 接著點選 Enabled APIs and Services
,再選擇畫面上方的 + ENABLE APIS AND SERVICES
> 在搜尋欄搜尋 google sheets API > 點進Google Sheets API,在Product details的畫面按 Enable
> 稍後片刻等他開通 > 開通後跳轉到新的頁面,按側邊欄 Credentials
+ CREATE CREDENTIALS
> 選擇 OAuth client ID
> 點選右邊的藍色按鈕 configure consent screen
> 選擇User Type,此處我選External > 點選CREATE
> 填入App information > Save and Continue
> 接下來Scopes和Test Users都可以暫時不管他,一樣Save and Continue
> 進入Summary頁面,按Back to Dashboard
Credentials
進入到Credentials頁面,選擇畫面上方的 + CREATE CREDENTIALS
> 選擇 OAuth client ID
> Application Type選Web Application
、填寫Name > 填寫 Authorized redirect URIs(例如:http://localhost:3000/oauth2callback
)> 點選CREATE
OAuth client created
的畫面,上面有Clinet ID
和Client Secret
的資訊,下方有Download JSON
選項,按一下就會下載OAuth Client ID的憑證資訊,這個檔案要保存好,等一下會用到(先重新命名為credentials.json
)。專案架構如下:
建立一個基本的Express伺服器:
Google官方文件提供了一個快速設定的範例,稍微修改就可以:
Points:
SCOPES
是根據我們所要使用的功能選擇授權的範圍,Google Sheets API提供的SCOPES可以看這裡。CREDENTIALS_PATH
是憑證資料的路徑,也就是前面設定OAuth Clinet ID下載的那個JSON檔案,剛才已經重新命名為credentials.json
,這裡我直接放在根目錄。TOKEN_PATH
是用來放token.json
的路徑,token.json
每次進行驗證取得refresh token會自動產生;如果更改SCOPE,記得要把舊的token.json
刪除。驗證完成後,就可以根據選擇的SCOPE對Sheet進行操作,這裡簡單示範幾個功能:
spreadsheets.create
:官方提供的範例index.js
中加入以下程式碼: Points:
title
是sheet的標題,也可以加入其他內容,參考文件:https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets#SpreadsheetPropertiesspreadsheetId
是每一個sheet獨有的ID,觀察sheet的網址,粗體字的部分就是sheetId:在createSheet
函式下方再加入一個函式,測試看看:
接著讓伺服器運作,成功的話,會在終端機上面看到:
Spreadsheet ID: <Your spreadsheet Id>
同時根目錄也新增了一個token.json
檔案,也可以到web介面看看,網址:https://docs.google.com/spreadsheets/d/<Your spreadsheet Id>/edit?pli=1#gid=0
應該可以看到一個標題是test的試算表建立成功,也可以進入個人的Google Sheets頁面,查看是否新增了一個新的試算表test:
需用取得Google憑證時的Google account去看,目前其他人還沒有權限
spreadsheets.values.update
:官方提供的範例index.js
中加入以下程式碼: Points:
values
:試算表範圍內的資料,也就是要操作的資料,values是必填的參數,型態是陣列(array)。其他參數參考文件。valueInputOption
是指系統如何解讀輸入資料。例如這裡使用USER_ENTERED
,則系統會解析Total
那列的'=SUM(B2:B4)'
,加總B2:B4的值,就和在Excel資料表裡面操作一樣的方法。其他選項參考文件。range
是指資料的範圍,可以指定多個儲存格 (例如 A1:D5) 或單一儲存格 (例如 A1)。詳細用法參考文件。或是範例中也有提到:在run()
中加入:
同樣讓伺服器運作,成功的話,會在終端機上面看到:
到web介面看看,這時可以看到test試算表中有資料了!
spreadsheets.values.get
:官方提供的範例index.js
中加入以下程式碼:在run()
中加入:
同樣讓伺服器運作,成功的話,會在終端機上面看到:
成功讀取了A1:D2這個範圍的資料,也就是Web介面上:
以上簡單介紹了Google Sheets API的一些用法,還有很多其他的功能都可以參考API文件。前面介紹了使用OAuth Client ID進行驗證的方法,另外也可以使用Service Account
進行驗證,驗證方式可以參考這篇文章;使用Service Account
驗證須注意權限,如要用自己的gmail帳號登入需要開啟權限,除了前面這篇文章中使用的方式(先用Gmail帳號開新的Sheet再分享權限給Service Account
)之外,另外也可以使用Google Drive API
給予權限,詳情可以參考這篇文章,以及Google Drive API
文件permissions.create
或permissions.update
,當然直接使用Google Drive API建立Sheet也是可以的。
本站內容僅為個人學習記錄,如有錯誤歡迎留言告知、交流討論!