从命令行下载/导出公共Google电子表格作为TSV?

时间:2014-06-17 03:56:27

标签: curl google-sheets google-docs-api google-spreadsheet-api

我有一个公开(已发布)的Google电子表格,我试图以TSV形式以编程方式下载。

在我的浏览器中,Google登录处于活动状态,对于某些实际密钥$keyhttps://spreadsheets.google.com/feeds/download/spreadsheets/Export?key=$key&exportFormat=tsv可以正常工作并生成TSV文件。

但是在我的shell中:

  • curl -L "https://spreadsheets.google.com/feeds/download/spreadsheets/Export?key=$key&exportFormat=tsv"会产生一堆javascript。
  • curl -L "https://spreadsheets.google.com/feeds/download/spreadsheets/Export?key=$key&exportFormat=csv"也会产生一堆javascript。
  • curl -L "https://docs.google.com/spreadsheet/pub?key=$key&single=true&gid=0&output=csv"可以生成并生成CSV文件。
  • curl -L "https://docs.google.com/spreadsheet/pub?key=$key&single=true&gid=0&output=tsv"会产生错误消息。

(尝试使用wget产生了类似的结果。)

如何使这项工作?到目前为止,我能够找到的所有Google文档都面向更复杂的问题,而不是简单的下载和格式更改,如果我的问题的解决方案在某处,我还没有找到它

5 个答案:

答案 0 :(得分:26)

我发现这是令人沮丧的无证件。我确定它已经记录在某个地方......但我从来没有找到它。

前提是您的Google表格是公开发布的。这对许多人来说并不直观。 (选择文件 - >发布到网络...)

发布工作表时,会给您一个这样的网址来复制: https://docs.google.com/spreadsheets/d/1XsfK2TN418FuEstNGG2eI9FmEV-4eY-FnndigHWIhk4/pubhtml

该网址可以很好地浏览...但它不是我想要的可下载CSV。通过搜索和反复试验的冗长组合,我提出了这个:

curl "https://docs.google.com/spreadsheets/d/1XsfK2TN418FuEstNGG2eI9FmEV-4eY-FnndigHWIhk4/export?gid=0&format=csv"

我发现它非常有帮助。我希望有人评论官方文档的链接,更详细地解释这一点。

答案 1 :(得分:3)

我可以通过这种方式下载shell:

  1. File =>发布到网络
  2. 选择工作表并选择要下载的格式。
  3. 点击发布
  4. 复制链接
  5. 然后使用它:

    wget -O ./filename.csv "LINK"
    

    curl -L "LINK" > ./filename.csv
    
  6. 就我而言,它按预期工作。

    另外我认为它发布了所有格式,因此您可以选择下载更改URL的最后部分而不取消发布并重新发布的内容:

    output=tsv
    output=csv
    

答案 2 :(得分:2)

要添加到answer written by @mdahlman中:有一个gid=<value>参数使您可以选择要查看的工作表(因为CSV和TSV仅支持查看一个工作表)。这是一个工作表ID,您可以从每个工作表的网址中提取它。

因此,要获取CSV / TSV发布链接,请执行以下操作:

  1. 发布文档以获取类似https://docs.google.com/spreadsheets/d/e/{key}/pub?output=tsv的URL。

  2. 然后为每个电子表格:

    1. 单击它。

    2. 在浏览器的地址栏中查看其URL。以edit#gid={gid}结尾。那就是你想要的。

    3. 从步骤1中的URL和2.2中的gid中获取URL:https://docs.google.com/spreadsheets/d/e/{key}/pub?output=tsv&gid={gid}

GID不按顺序排列(0、1、2,...)。它们是长数字(对我来说是9位数字),似乎没有任何直接的顺序,所以它们实际上更像是表单密钥,而不是人们期望的“ id”。

在我的文档中,GID之一为零。我假设这是某种默认值或第一个创建的工作表。这就解释了为什么gid=0为上面的某些人工作而对其他人却产生了错误(那些没有带有这样的GID的工作表...他们可能已将其删除了)的原因。

答案 3 :(得分:0)

私有文件需要下载OAuth授权凭据。您可以在Google Drive API的Download Files指南中详细了解该流程。

答案 4 :(得分:0)

我的回答是如何找到答案。

在Chrome浏览器中,导航到您的Google文档。

在浏览器的右上角,转到三个点 - >更多工具 - &gt;开发人员工具

这将调出html ...调试器。

在调试器窗口的顶部,选择network。

现在,在您的文档中,启动下载,因为您尝试自动执行。

在调试器中,它会向您显示所做的任何Web请求。第一个新的可能是你想要的。

您应该可以右键单击 - &gt; copy-&gt;复制链接地址

网址包含ID。我不知道它的用途,但curl能够不用下载该文档。

希望它有所帮助。