微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

以JSON格式访问(新式的,公开的)Google表格

如何访问(新式)Google表格中的 JSON内容?我的目的是访问 JavaScript中的值,所以我需要能够通过HTTP下载JSON.

示例:如何以JSON格式从this sheet下载数据?

我试图通过网络搜索找到答案,但最终失败:

>网络上的许多教程都是从url中找到key = …的值的指令开始的.导出工作表时我得到的URL是https://docs.google.com/spreadsheets/d/1mhv1lpzufTruZhzrY-ms0ciDVKYiFJLWCMpi4OOuqvI/pubhtml?gid=1822753188\u0026amp;single=true,并且没有键= ….
> “Accessing A Public Google Sheet”的答案似乎表明我应该尝试使用https://docs.google.com/spreadsheets/d/1mhv1lpzufTruZhzrY-ms0ciDVKYiFJLWCMpi4OOuqvI/export?format=csv&id=1mhv1lpzufTruZhzrY-ms0ciDVKYiFJLWCMpi4OOuqvI&gid=1822753188获取CSV版本,但这对我来说不起作用:我得到一个登录页面而不是数据.
>我发现使用Google Apps脚本的方法,但这些似乎在浏览器中需要一些用户操作,而不是提供下载链接.

解决方法

我终于(种)解决了我的问题.为了将来参考,如果有人遇到同样的麻烦,我想出了这个解决方案:

>要使工作表公开访问,需要使工作表公开访问.这在Google表格Web界面中完成,使用菜单条目File>发布到网络…>链接>发布.可以发布整个电子表格或单独的工作表.
>以编程方式访问Google表格中的数据的API在Google Sheets API web pages中有所描述.该API使用https://spreadsheets.google.com/Feeds /…/ key / worksheetId / ….的格式的URLS.稍微奇怪的是,key和workheetId的含义似乎没有在api文档中解释.

我的实验表明,可以通过访问通过Web界面访问工作表的一部分URL来查找关键值(另见here).关键是/ d /之后的所有内容,直到下一个斜线.对于该问题的电子表格,关键是1mhv1lpzufTruZhzrY-ms0ciDVKYiFJLWCMpi4OOuqvI. worksheetId似乎是一个整数,给出工作表在电子表格中的位置.对于问题中的示例,必须知道显示的工作表是第二个工作表,在这种情况下,工作表1是2.

API定义了公共和私人请求.要访问未经身份验证的导出资源,必须使用公共请求.
>在“Retrieving a list-based feed”节(点击示例中的“协议”)中解释从电子表格获取数据的API调用.需要的URL从问题的电子表格中提取数据

https://spreadsheets.google.com/feeds/list/1mhv1lpzufTruZhzrY-ms0ciDVKYiFJLWCMpi4OOuqvI/2/public/full

此URL的HTTP GET请求将该数据作为XML返回. (我没有找到一种方式来获取JSON的数据.)
>通常的保护再次跨站点请求使得很难通过Web应用程序中的JavaScript XML RPC调用访问数据.解决此问题的一个方法是通过Web服务器代理API调用(例如使用Nginxproxy_pass directive).

上述步骤至少是解决问题的一部分.唯一的困难是数据以XML而不是JSON返回.由于api文档中没有提及JSON,也可能无法以此格式提取数据?

原文地址:https://www.jb51.cc/js/152921.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐