Google表格API v4

8

我试图使用“读取多个范围”的示例:

https://sheets.googleapis.com/v4/spreadsheets/{SpreadsheetID}/values:batchGet?ranges=Sheet1!B:B&ranges=Sheet1!D:D&valueRenderOption=UNFORMATTED_VALUES?majorDimension=COLUMNS

来自:Google Sheets API v4 示例,我用我的电子表格 ID 替换了“spreadsheetId”。 但是当我发送 GET 请求(通过 Postman)时,我收到以下响应:

{
  "error": {
    "code": 403,
    "message": "The request is missing a valid API key.",
    "status": "PERMISSION_DENIED"
  }
}

我使用了https://developers.google.com/oauthplayground/进行了授权,使用我的电子邮件对Spreadsheet API v4进行了授权,最后生成了一个包含密钥的长链接,并看到了正确响应和数据表内容。

我的问题是: 为什么不能只替换Google API (https://developers.google.com/sheets/api/samples/reading)示例中的电子表格 ID 。 附:我的电子表格链接是公开的,我的电子表格是公开的,可在 JSON 格式下使用,并且想要正确使用 Google Spreadsheet API v4 的 url 来发送多个请求的 batchGet 是什么?

我采用了另一种方法并且它运作正常,但为什么第一种方法 (v4) 不起作用呢:

https://spreadsheets.google.com/feeds/list/{SpreadsheetID}/od6/public/values?alt=json

当我尝试在一个请求中结合两个API,并收到错误消息“不一致的重复查询参数范围”时:

https://spreadsheets.google.com/feeds/list/{SpreadsheetID}/od6/public/values:batchGet?ranges=Sheet1!B:B&ranges=Sheet1!D:D&valueRenderOption=UNFORMATTED_VALUES?majorDimension=COLUMNS

======================================
编辑:

SpreadSheetID:1KBk1J7TJCwnayMnTbaysqvFk98kVDdxXWNw2JYc3bW0

隐身模式下可用:电子表格

JSON格式:JSON

参考资料:Google Sheets API v4:读取多个范围

使用相同的SpreadSheetID示例:错误 403


这是一个示例链接:数据表格相同的电子表格以JSON格式:jsonAPI v4:错误403 - Alex Pilugin
如果您正在使用JWT / OAuth 2.0通过服务帐户进行身份验证,则需要确保与服务帐户电子邮件共享特定的表格。 - Sarah Dwyer
4个回答

8
我相信您在URL中缺少API。这是来自Google电子表格API文档的内容。
获取API密钥的方法如下:
打开API控制台中的凭据页面。
API密钥:不提供OAuth 2.0令牌的请求必须发送API密钥。该密钥标识您的项目并提供API访问、配额和报告。
该API支持对API密钥实施多种限制。如果需要的API密钥不存在,则可以通过单击“创建凭据” > “API密钥”在控制台中创建API密钥。您可以在使用之前通过单击“限制密钥”并选择一个限制来限制该密钥在生产中的使用。为了保护您的API密钥安全,请遵循安全使用API密钥的最佳实践。
获得API密钥后,您的应用程序可以将查询参数key=yourAPIKey附加到所有请求URL中。
API密钥可以安全地嵌入在URL中,不需要任何编码。 Google电子表格文档

4
  • 我已经阅读了。
  • 如果我的电子表格在隐身模式下可见,为什么我需要使用OAuth 2.0呢?
  • 此外,可以通过此URL访问该电子表格: https://spreadsheets.google.com/feeds/list/{SpreadsheetID}/od6/public/values?alt=json
  • 为什么Google API参考文档(例如示例)有误导性的例子?
  • 对于我来说,主要问题是如何使用“batchGet”命令。
- Alex Pilugin

7

请确保将key=YOUR_API_KEY作为请求参数传递。

例如:
https://sheets.googleapis.com/v4/spreadsheets/{sheet_id}/values/Sheet1!A1:D5?key={YOUR_API_KEY}

2
除了@skamble89的答案之外,此403错误通常是由于在授权请求方面出现了不正确或遗漏的配置所致。如果您正在使用OAuth 2.0进行授权请求,请确保使用正确的范围。
请确保您有调用此电子表格的权限,并在您的开发人员控制台中启用Sheets API。

1
curl "https://sheets.googleapis.com/v4/spreadsheets/1ShTP408LPzLOGjqXQTRcmXXXXXXXXXXXXXPUteQmY7o/values/A1%3AD3?key={YourApy"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接