Google Spreadsheets CSV导出的下载链接-带有多个工作表


78

我正在尝试找到一个链接,该链接可让我下载CSV格式的Google电子表格。目前,我正在使用:

https://docs.google.com/spreadsheets/d/DOCID/export?format=csv

除了只下载第一个工作表之外,这非常有用。我的文档有多张纸。有谁知道如何设置此链接的格式,以便下载所有工作表或特定工作表?就像是:

&sheet=all

要么

&sheet=3

接受的答案应该是最后一个答案:stackoverflow.com/a/50802790/462152
Filippo De Luca

Answers:


161

Google表格中的每个文档都支持“图表工具数据源协议”,这些文章对此进行了解释(以一种相当随意的方式):

  1. “从单独的电子表格创建图表”
  2. “查询语言参考”
  3. “实现图表工具数据源协议”

要将特定的工作表下载为CSV文件,请替换{key}为文档的ID和{sheet_name}要导出的工作表的名称:

https://docs.google.com/spreadsheets/d/{key}/gviz/tq?tqx=out:csv&sheet={sheet_name}

数据源协议非常灵活。各种其他选项包括:

响应格式: 选项包括tqx=out:csv(CSV格式),tqx=out:html(HTML表)和tqx=out:json(JSON数据)。

导出工作表的一部分: 提供range={range}选项,其中范围可以是任何有效的范围说明符,例如A1:C99B2:F

执行SQL查询: 提供tq={query}选项,例如tq=SELECT a, b, (d+e)*2 WHERE c < 100 AND x = 'yes'

导出文本数据:headers=0如果您的字段包含文本数据,请 提供此选项,否则在导出过程中可能会将其剪切掉。


我找不到的是API接口,它显示了文档的图纸/类的列表。因此,不可能动态地循环浏览文档表。
格雷格

2
@Greg,您可以从Spreadsheets API获取工作表列表(名称和gid)。使用的URL是GET https://spreadsheets.google.com/feeds/worksheets/{fileId}/private/full,除非电子表格是公开的,否则您需要OAuth。
kiwidrew

2
Google已经改变了一些东西。不再有效。相反,您会获得文件已移动的重定向。该链接为data.csv,您必须先将其关闭。
舍伍德·博茨福德

1
似乎正在执行某种并不总是有效的处理,为某些单元格返回了空值。
szotp

1
这似乎不起作用了(不再)?docs.google.com/spreadsheets/d {key} / gviz / tq?tqx = out:csv&sheet = {sheet_name}
snh_nl19年

34
  1. 打开您的Google工作表
  2. 单击“共享”按钮,然后配置“具有链接的任何人都可以查看”
  3. 按F12键在网络浏览器中启动调试工具,然后选择“网络”选项卡。
  4. 选择“文件->下载为->逗号分隔值.csv当前工作表”(或所需的任何格式,例如xlsx,ods,pdf,html,csv或tsv)
  5. 从“网络”选项卡复制GET请求的URL

它看起来像这样:https : //docs.google.com/spreadsheets/d/KEY/export?format=csv&id=KEY&gid=SHEET_ID

请注意,“ gid”参数是工作表ID,您可以在打开的Google工作表的网址末尾找到该ID。参考:https : //developers.google.com/sheets/api/guides/concepts#sheet_id


2
似乎即使没有id参数也可以正常工作,例如:docs.google.com/spreadsheets/d/KEY/…–
jrc

2
+1是因为您的链接在我的情况下有效:可接受的答案在sheet_name参数中似乎不区分大小写(即foo和Foo将始终为我下载名为foo的工作表),而gid是唯一的,因此它始终有效。
EsotericVoid

22

这是一个示例csv数据,可以下载。像这样制作此数据的下载链接

  1. 打开谷歌表->空白->文件->打开
  2. 从“我的云端硬盘”或“上传”中打开文件
  3. 文件->发布到网络->“工作表名称”选项和“ csv”选项

4
我不确定为什么这个答案会被否决。这是一个很好且有效的答案。通过这种方法,我可以提供未经身份验证的CSV URL,甚至可以静态导出给定版本的CSV URL。
Feu

1
可能是因为Google刷新发布的CSV文件需要花费几分钟。
Svetoslav Marinov

有谁知道我可以用它下载curl吗?在浏览器中,它为我提供了正确的CSV文件,终端获得了“临时重定向”。
kslstn

这个答案应该被赞成,但不一定是解决方案。@jrc对此回复的评论(stackoverflow.com/a/44184071/160863)可能更理想,尤其是对于程序员而言。这是CSV导出的有效网址(注意:工作表必须可以公开访问): docs.google.com/spreadsheets/d/…–
dancow

2020年11月18日更新:过去,此答案也适用于私人表格。但是最近在某个时候,Google添加了一项重大更改,如果工作表是私有的,则需要对发布到Web链接进行身份验证:issuetracker.google.com/issues/173534863
dancow

4

截至2020年11月@ jrc的回复似乎掩盖了最优雅,最简单的解决方案:

https://docs.google.com/spreadsheets/d/KEY/export?format=csv&gid=SHEET_ID

这是一个生动的例子;因为有一个谷歌的板材KEY1CTgM1g_aYoWFFpHU6A_qyqWGH0ulCFhs67uAcRVf1Rw

即:https//docs.google.com/spreadsheets/d/1CTgM1g_aYoWFFpHU6A_qyqWGH0ulCFhs67uAcRVf1Rw

要获取到第一张工作表(即gid=0)的CSV导出的永久链接,请附加/export?format=csv&gid=0::

https://docs.google.com/spreadsheets/d/1CTgM1g_aYoWFFpHU6A_qyqWGH0ulCFhs67uAcRVf1Rw/export?format=csv&gid=0

注意:如果您只是导出第一张工作表,即gid=0,则URL与原始问题中存储的URL格式相同,即

(默认情况下,端点将假定gid=0是否未指定)

https://docs.google.com/spreadsheets/d/DOCID/export?format=csv

它不是“最优雅,最简单的解决方案”,对于边缘情况“可访问性”可能很好。
Partha Sen

2
它是“最简单的”,因为它使用了GSheets在其整个生命周期中都具有的相同端点格式和约定。导出它所需要的工作或信息不会超过工作表URL中用户已经拥有的内容。能够立即获得固定链接不是“边缘案例”
dancow

0

以下网址格式(作为模板字符串)是我唯一使用的格式:

`https://docs.google.com/spreadsheets/d/e/${id}/pub?output=csv&id=${id}&gid=${gid}`

假设整个文档已经发布到网络上。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.