「Google Sheet API」可用來存取 Google 試算表資料,但卻是我少數不推薦使用的 Google API,原因可參考之前寫的「利用 Google 試算表當小型資料庫 (4)使用 SQL 語法讓搜尋功能更強大」→「1. Sheet API 功能不佳」,因為 Sheet API 無法對資料進行篩選、搜尋,導致每次都得讀取所有資料後,再自己寫程式進行過濾。 然而去年 Google 試算表進行某次更新後,之前寫的「利用 Google 試算表當小型資料庫 (2)讀取資料庫」方法已然失效,無法從試算表 feed 讀取資料。根據官方的說法「GData API Directory」→「Google Spreadsheets Data API → Deprecated. Replaced by the Google Sheets API v4.」,意思就是 Google 宣布舊的試算表 API 已失效,建議即日起改用 Sheet API V4 取代原本的讀取方式。 因此本篇整理如何操作 Sheet API,取代原本的操作方式,來取得 JSON 格式的試算表資料。 (圖片出處: pexels.com)
一、Sheet API 準備動作
以下流程請參考這篇「取得 Google API Key(金鑰) 流程」進行操作: 1. 啟用 Sheet API- 按照該篇文章完成「一、建立專案」
- 進行「二、啟用 Google API 服務」時,可輸入
Sheet API ,找到後「啟用」
- 接著依照「三、取得 API Key」的流程,建立一組「API 金鑰」,請記住這組字串,之後會用到。
- 如果這組「API 金鑰」在前端使用的話,會被使用者看到,那麼建議按「限制金鑰」進行其他設定。
- 同上,為了避免金鑰被別人拿去用,建議「應用程式限制」設定為自己網址,「API 限制」設定為「Sheet API」才能使用。
二、Sheet API 讀取資料
1. 官網文件讀取試算表資料的操作語法說明請見「spreadsheets.values.get」:GET https://sheets.googleapis.com/v4/spreadsheets/[試算表 ID]/values/[工作表名稱及範圍]
官方也提供了「Sheet API 測試工具」,進入後切換到「HTTP」可看到以下語法: GET https://sheets.googleapis.com/v4/spreadsheets/[試算表 ID]/values/[工作表名稱及範圍]?key=[API 金鑰]
自行輸入以上參數就可看到取回的資料,JSON 格式大致長得像這樣: { "range": "sheet1!A1:Z4850", "majorDimension": "ROWS", "values": [ [ "時間", "稱謂", "性別", "註解" ], [ "2016/11/29 0:00:00", "Wayne", "male", "測試寫入功能" ], [ "2016/11/29 0:00:00", "Mary", "female", "成功!" ] ] }
2. 參數說明這裡說明前述的參數如何填寫: - 試算表 ID:試算表網址字串中
~/d/xxxxxxxxxxxx/edit~ xxxx 這一長串就是試算表 ID - 工作表名稱及範圍:這部分的詳細說明可參考官網文件「Google Sheets API Overview」→「Cell」→「A1 notation」或「R1C1 notation」,最簡單就是填入工作表名稱就好,例如「工作表1」,代表選擇全部範圍
- API 金鑰:填入前面「一、Sheet API 準備動作」取得的金鑰字串
三、操作範例
本篇同樣以這個試算表當做範例說明:- https://docs.google.com/spreadsheets/d/106tP9D89pnEgvZTuM3_ahMJRPjCSD3qthth-GEhGMIE/edit?usp=sharing
<div id="wfu_sheet_json"></div> <script src='//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js'></script> <script> var spreadsheet_id = "106tP9D89pnEgvZTuM3_ahMJRPjCSD3qthth-GEhGMIE", // 填入試算表 ID tab_name = "sheet1", // 填入工作表名稱 api_key = "xxxxxxxxxx", // 填入 API 金鑰 url = "https://sheets.googleapis.com/v4/spreadsheets/" + spreadsheet_id + "/values/" + tab_name + "?key=" + api_key; $.getJSON(url, function(json) { var values = json.values, // 所有試算表資料 html = ""; html += "<table>"; values.forEach(function(rows) { html += "<tr>"; rows.forEach(function(item) { html += "<td>" + item + "</td>"; }); html += "</tr>"; }); html += "</table>"; $("#wfu_sheet_json").html(html); }); </script>
以下是程式碼的執行效果範例,只取前 5 筆顯示: 時間 | 稱謂 | 性別 | 註解 |
2016/11/29 0:00:00 | Wayne | male | 測試寫入功能 |
2016/11/29 0:00:00 | Mary | female | 成功! |
2017/01/12 16:06:13 | |||
2017/01/13 0:01:00 | test | fe | jj |
用 Google Apps Script 操作試算表系列文章:
更多「Google 試算表」相關文章: