如何通过JSON访问(新式)Google工作表的内容?我的目标是从JavaScript访问值,因此我需要能够通过HTTP下载JSON。
示例:如何以JSON 格式下载此工作表中的数据?
我试图通过网络搜索找到答案,但最终失败了:
网络上的许多教程都是从key=...在URL中查找值的指令开始的。导出工作表时获得的URL是https://docs.google.com/spreadsheets/d/1mhv1lpzufTruZhzrY-ms0ciDVKYiFJLWCMpi4OOuqvI/pubhtml?gid=1822753188&single=true,其中没有URL key=...。
key=...
https://docs.google.com/spreadsheets/d/1mhv1lpzufTruZhzrY-ms0ciDVKYiFJLWCMpi4OOuqvI/pubhtml?gid=1822753188&single=true
“访问公开的Google表格”的答案似乎表明我应该尝试https://docs.google.com/spreadsheets/d/1mhv1lpzufTruZhzrY-ms0ciDVKYiFJLWCMpi4OOuqvI/export?format=csv&id=1mhv1lpzufTruZhzrY-ms0ciDVKYiFJLWCMpi4OOuqvI&gid=1822753188获取CSV版本,但这对我而言不起作用:我得到的是登录页面而不是数据。
https://docs.google.com/spreadsheets/d/1mhv1lpzufTruZhzrY-ms0ciDVKYiFJLWCMpi4OOuqvI/export?format=csv&id=1mhv1lpzufTruZhzrY-ms0ciDVKYiFJLWCMpi4OOuqvI&gid=1822753188
我发现使用Google Apps脚本的方法,但是这些方法似乎需要用户在浏览器中进行某些操作,而不是提供下载链接。
如果要使用最新的API(v4),则需要执行以下操作:
https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID/values/RANGE?key=API_KEY
然后,您将获得干净的JSON响应:
{ "range": "Sheet1!A1:D5", "majorDimension": "ROWS", "values": [ ["Item", "Cost", "Stocked", "Ship Date"], ["Wheel", "$20.50", "4", "3/1/2016"], ["Door", "$15", "2", "3/15/2016"], ["Engine", "$100", "1", "30/20/2016"], ["Totals", "$135.5", "7", "3/20/2016"] ], }
请注意,如果要指定一个网页的全部内容,如标识Sheet1是完全有效的。
Sheet1
有关更多信息,请参见基础阅读。
从v4 API开始,所有请求都必须带有标识符(例如API密钥):
向Google Sheets API提出的公开数据请求必须带有标识符,该标识符可以是API密钥或访问令牌。
按照链接文档中的步骤在凭证页面上创建API密钥。
确保:
请注意,您仍然可以访问公共数据,而不必强制用户登录:
在新的Sheets API v4中,没有显式的可见性声明。使用电子表格ID进行API调用。如果应用程序无权访问指定的电子表格,则返回错误。否则,呼叫继续进行。
请注意,您 并不 需要将表发布到网上。您需要做的就是确保 任何 知道 链接的人都 可以访问该工作表。
(即,当您单击Google Sheets API上的“ 创建凭据” 时,选择“其他非UI,用户数据”,并显示“无法从没有UI的平台访问用户数据,因为登录需要用户交互。”)安全地忽略该消息。API密钥是您真正需要的,因为这是公共数据。)
该请求缺少有效的API密钥。
您没有key=在通话中包含参数。
key=
API密钥无效。请传递有效的API密钥。Google开发人员控制台
您提供了错误的API密钥。确保您正确键入了密钥。如果您还没有密钥,请转到Google开发人员控制台并创建一个。
找不到API密钥。请传递有效的API密钥。 Google开发者控制台API密钥
您的API密钥可能是正确的,但是您很可能没有添加Google表格权限。转到Google开发者控制台API密钥页面,然后添加表格权限。
呼叫者没有权限
您的工作表未设置为公开访问。