How to migrate google sheets API v3 to google sheets Api v4

ANi*_*120 2 javascript google-sheets

一段时间以来,我一直在使用公共谷歌电子表格作为我的几个网络项目的 JSON 端点。我喜欢这种方法,因为我可以从公共电子表格中检索数据,而不需要任何类型的身份验证或令牌来获取数据,我所需要做的就是发布电子表格,然后从一个简单的 URL 获取:

fetch(`https://spreadsheets.google.com/feeds/${mode}/${id}/${sheetNum}/public/values?alt=json`).then((res)=>console.log(res));
Run Code Online (Sandbox Code Playgroud)

Google 正在弃用 Sheets v3,我对如何迁移到 v4 感到困惑。从这个答案 我收集到我需要提供通过谷歌云控制台创建的访问令牌。但我是否需要创建某种特殊的“应用程序”或“工作场所”,或者任何旧的 API 令牌都可以吗?我尝试了以下方法:

  • 创建 GCP 项目
  • 启用 Google 表格 API
  • 点击创建凭据
  • 使用以下 URL 方案获取数据:
fetch(https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID/values/RANGE?key=API_KEY)
Run Code Online (Sandbox Code Playgroud)

但这给了我 403 响应。

dou*_*ary 6

您正在使用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(旧API,不推荐):

\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(新API,推荐):

\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 JSON Alt Type 变体 API 要求通过File > Publish to the web公开电子表格。V4 要求通过“文件” >“共享”与“知道链接的任何人都可以查看”共享文件

\n