Google Sheets 是否停止允许 json 访问?

Dim*_*ima 15 json google-sheets google-data-api google-sheets-api

我有一个应用程序可以打开我已发布到网络上的电子表格的 json 版本。我使用了该网站上的说明: https ://www.freecodecamp.org/news/cjn-google-sheets-as-json-endpoint/

几个月来一直工作正常,但今天我意识到我的 json 文件的 url 从昨天开始就不再工作了。它显示消息:“抱歉,目前无法打开文件。请检查地址并重试。” 不过,以网页形式查看电子表格的常规链接仍然有效。

Google 是否放弃了对此功能的支持?还有其他方法可以通过 URL 获取 json 格式的电子表格数据吗?我开始研究 Google Developer API,但它确实令人困惑。

dou*_*ary 24

您正在使用Google 数据协议JSON Alt Type 变体。该协议已过时并且似乎不再可靠地工作。GData API 目录告诉我们:

\n
\n

Google Spreadsheets Data API:GData 版本仍然有效。已被 Google Sheets API v4 取代。

\n
\n

Google Sheets API v4是一种现代RESTful接口,通常与客户端库一起使用来处理数据请求的身份验证和批处理。如果您不想进行完整的客户端实现,David Kutcher使用 jQuery 为 GData JSON Alt 类型提供以下 v4 模拟:

\n

GData(旧版本,不推荐):

\n
var url = \'https://spreadsheets.google.com/feeds/list/\' +\n           spreadsheet_id + \'/\' + tab_ordinal + \'/public/values?alt=json\';\n($.getJSON(url, \'callback=?\')).success(function(data) {\n  // ...\n};\n
Run Code Online (Sandbox Code Playgroud)\n

V4(新版本,推荐):

\n
var url = \'https://sheets.googleapis.com/v4/spreadsheets/\' +\n           spreadsheet_id + \'/values/\' + tab_name +\n           \'?alt=json&key=\' + api_key;\n($.getJSON(url, \'callback=?\')).success(function(data) {\n  // ...\n};\n
Run Code Online (Sandbox Code Playgroud)\n

...在哪里:

\n
    \n
  • spreadsheet_id是电子表格地址 \xe2\x80\x94 中由字母和数字组成的长字符串,它是/d/和之间的位/edit
  • \n
  • tab_ordinal是工作表的编号 \xe2\x80\x94 选项卡栏中出现的第一个工作表是工作表编号1,第二个工作表是2,依此类推
  • \n
  • tab_name是工作表的名称,即打开电子表格进行编辑时在窗口底部的选项卡栏中看到的名称
  • \n
  • api_key是您从Google Cloud Platform 控制台获取的 API 密钥
  • \n
\n

请注意,两个版本的 JSON 输出格式有所不同。

\n

使用 GData 模式,电子表格需要通过File > Share > Publish to the web进行共享。

\n

使用 V4 模式,需要将电子表格共享为“文件”>“共享”>“与其他人共享”>“知道链接的任何人都可以查看”

\n


A5H*_*H1Q 18

截至 2022 年 3 月:

如果您不想创建密钥,可以使用以下 URL 格式:

https://docs.google.com/spreadsheets/d/{spreadsheetId}/gviz/tq
Run Code Online (Sandbox Code Playgroud)

下载json.txt以下格式的文件

google.visualization.Query.setResponse({json});
Run Code Online (Sandbox Code Playgroud)

从那里你必须切出 json

-或者 -

只需按照官方文档配置一个密钥即可。

  1. 转到 Google Console 并创建一个项目(或使用现有项目)
  2. 转到Credenetials页面并创建 API 密钥
  3. 包含库中的 Sheets API
  4. 瞧!

您现在可以使用 URL 格式获取 json:

https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{sheetName}?alt=json&key={theKey}

Run Code Online (Sandbox Code Playgroud)

编辑:该表应该是公开的,任何有链接的人都可以查看