Google Sheet API v3 升 v4 - Google

Suhail Hany avatar
By Suhail Hany
at 2021-08-20T03:28

Table of Contents

有連結可以點、有表情符號、其他沒差的 blog 版:
https://pt2club.blogspot.com/2021/08/google-sheet-api-v3-v4.html


----------------------------------------------------------------------


之前用這個網址格式取得 JSON 格式 Google Sheet 資料,一直相安無事:


https://spreadsheets.google.com/feeds/list/SHEET_ID/
TAB_INDEX/public/values?alt=json


然後大概從 2021/8/15 開始,就有機率讀取不成功(對,有時候會成功 =.=),
有的時候是炸 CORS 問題、有的時候是炸 404。

狗了一下的結果,應該就是 Google Sheet API v3 在 2021/8/2 停用所導致的。
至於 v3 版跟應該還會繼續活著的 GData 有什麼關係、
為什麼是「有機率掛掉」就… 不研究… [蓋牌][翻白眼]


經過幾天的摸索,如果只是單純要取得 JSON,那麼會遇到下面這幾件事情。

首先要去 Google Cloud Platform 搞一個 API 金鑰(以下簡稱 API_KEY)。
如果之前沒有用過可能還要先開一個(看起來毫無意義的)專案然後才能產生…

有了 API 金鑰之後,接下來是把網址改成這個格式:

https://sheets.googleapis.com/v4/spreadsheets/SHEET_ID/
values/RANGE&key=API_KEY


這邊不再是用「第幾個工作表」(或是那個根本不知道怎麼來的 id 值)的方式,
而是指定 RANGE。完整版的 RANGE 大概是「FOO!A1:D100」的長相,
這表示要求「FOO」這個工作表的 A1~D100 這個 cell 範圍的資料。


實測之後(找不到文件… )發現允許下列幾種變形:

+ FOO:可以省略 cell 範圍。如此會回傳整個 FOO 的資料
+ A1:D100:可以省略工作表名稱。
如此會回傳第一個工作表的指定 cell 範圍的資料


回傳的 JSON 也跟以前不一樣,v4 版變得很純:

{
"range": "'FOO'!A1:D100",
"majorDimension": "ROWS",
"values": [
["ColumnA", "欄位B", "ColumnC", "欄位D"],
["第一筆A", "第一筆B", "第一筆C", "第一筆D"],
[],
["", "第三筆B"]
}


+ v3 會把 sheet 的第一個 row 的值當成 JSON 的 key 值;
v4 純粹就是給你一個二維字串陣列。(反正都能指定範圍了)
+ v3 遇到第一個空白 row 就會視為後面沒有資料停止輸出;
v4 會在指定範圍內確定是否以下空白才停止輸出,
其中夾雜的空白行會給一個空陣列。
+ 如果該 row 第 n 個 column 之後都沒有值,
則該 row 對應的陣列長度只到 n - 1。
1~n - 1 當中如果有 column 沒有值,會給空字串。


一樣是實測結果(還是找不到文件… ),
下列狀況會導致 server 給不是 200 的 HTTP status code:

+ 400:range 無法正常解析
+ 403:API_KEY 值不正確
+ 404:SHEET_ID 值不正確


最後,用 v4 版,sheet 可以不用做「發布到網路」這一個動作,
但是「共用」設定的「取得連結」要設定為「知道連結的使用者(檢視者)」



--
錢鍾書: 說出來的話
http://www.psmonkey.org
比不上不說出來的話
Hiking / Singapore 板
只影射著說不出來的話
and more......

--
Tags: Google

All Comments

Eartha avatar
By Eartha
at 2021-08-23T08:04
不想處理金鑰的話還是可以繼續用發布到網路的方式
然後自己 csv 轉 json
Lily avatar
By Lily
at 2021-08-26T12:39
專業文 推一個

pixel5音量調整問題

Wallis avatar
By Wallis
at 2021-08-18T18:12
google板各位好 我這幾天發現我的pixel5沒辦法在螢幕暗掉的情況下調整音量 一定要讓螢幕亮起來才可以 這樣的情況要怎麼調整呢? 有點困擾 謝謝 -- 我老公1 https://imgur.com/n4DZeSq.jpg 我老公2 https://imgur.com/FEfLR1j.j ...

google表單 導覽模式

Damian avatar
By Damian
at 2021-08-18T06:56
各位朋友好 想詢問一下,一開始進去google表單的話,會有導覽模式 如果之後想要看這個導覽模式的話,還可以再重新看一次嗎? 或是有連結可以查看這個導覽模式嗎? 因為要給別人做教學看的,但這個模式一次找不到 希望可以幫忙,謝謝了 - ...

Chrome觀看youtube其他線上看緩衝

Elvira avatar
By Elvira
at 2021-08-17T22:37
目前用chrome開啟youtube、愛奇藝、friday等其他線上追劇 一集45分鐘的劇大概只會剛開始播時下載5分鐘的緩衝 然後緩衝下載就變慢,如果看到一半想要往後拉進度就只能拉快5分鐘內的 若超過5分鐘的進度就還要等2、3秒下載緩衝 請問如何修改設定讓chrome觀看youtube等線上追劇,緩衝 ...

adsense可以知道哪個廣告帶來收益嗎?

Mason avatar
By Mason
at 2021-08-17T17:44
前幾天我的adsense 一天收益 從3美金 暴增到17美金 害我很好奇到底是什麼廣告被點擊 但是我點了adsense裡面所有的功能列 好想找不到這功能 請問有辦法知道adsense是什麼廣告帶來收益的嗎? - ...

Google帳號刪不掉

Rae avatar
By Rae
at 2021-08-17T09:22
如下圖 https://i.imgur.com/7BT5eMi.jpg 手機是三星 每次要移除這個帳號他會跳出管理員不允許此權限 而且就唯獨這個帳號會這樣 其他都不會 我有爬文看過人家是把鎖定螢幕移除 然後帳號就可以刪除了 但我試過沒有用 求各位大大幫忙解決…感謝 - ...