示例:如何以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从问题的电子表格中提取数据
此URL的HTTP GET请求将该数据作为XML返回. (我没有找到一种方式来获取JSON的数据.)
>通常的保护再次跨站点请求使得很难通过Web应用程序中的JavaScript XML RPC调用访问数据.解决此问题的一个方法是通过Web服务器代理API调用(例如使用Nginx的proxy_pass directive).
上述步骤至少是解决问题的一部分.唯一的困难是数据以XML而不是JSON返回.由于API文档中没有提及JSON,也可能无法以此格式提取数据?