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

Aar*_*ies 17 curl google-sheets google-docs-api google-spreadsheet-api

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

在我的浏览器中,Google登录处于活动状态,对于某些实际密钥$key,https://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文档都面向更复杂的问题,而不是简单的下载和格式更改,如果我的问题的解决方案在某处,我还没有找到它.

mda*_*man 27

我发现这是令人沮丧的无证件.我确定它已在某处记录......但我从未发现它.

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

发布工作表时,您将获得一个这样的URL来复制: 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"

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

  • 不知何故,如果我包含`gid = 0`,我将得到一个页面未找到错误,但是如果不包含它,我将得到预期的结果 (2认同)
  • 如果返回 HTML,则需要在curl 中添加 `-L` 标志(`curl -L "https://......"`) (2认同)

小智 7

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

  1. 文件 => 发布到 Web
  2. 选择一个工作表和您要下载的格式。
  3. 点击发布
  4. 复制链接
  5. 然后使用它:

    wget -O ./filename.csv "LINK"
    
    Run Code Online (Sandbox Code Playgroud)

    或者

    curl -L "LINK" > ./filename.csv
    
    Run Code Online (Sandbox Code Playgroud)

就我而言,它按预期工作。

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

output=tsv
output=csv
Run Code Online (Sandbox Code Playgroud)


Ved*_*ego 7

添加到@mdahlman 写的答案:有一个gid=<value>参数可以让您选择要查看的工作表(因为 CSV 和 TSV 支持仅查看一张工作表)。这是一个工作表 ID,您可以从每个工作表的 URL 中获取它。

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

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

  2. 然后对于每个电子表格:

    1. 点击它。

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

    3. 根据步骤 1. 和gid2.2. 中的 URL 创建您的 URL https://docs.google.com/spreadsheets/d/e/{key}/pub?output=tsv&gid={gid}: 。

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

在我的文档中,其中一个 GID 为零。我假设它是某种默认工作表或第一个创建的工作表。这解释了为什么gid=0对上面的某些人有效,但对其他人却产生了错误(那些没有具有此类 GID 的工作表的人......他们可能已经删除了它或其他东西)。