我有一个公开(已发布)的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文档都面向更复杂的问题,而不是简单的下载和格式更改,如果我的问题的解决方案在某处,我还没有找到它
答案 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:
然后使用它:
wget -O ./filename.csv "LINK"
或
curl -L "LINK" > ./filename.csv
就我而言,它按预期工作。
另外我认为它发布了所有格式,因此您可以选择下载更改URL的最后部分而不取消发布并重新发布的内容:
output=tsv
output=csv
答案 2 :(得分:2)
要添加到answer written by @mdahlman中:有一个gid=<value>
参数使您可以选择要查看的工作表(因为CSV和TSV仅支持查看一个工作表)。这是一个工作表ID,您可以从每个工作表的网址中提取它。
因此,要获取CSV / TSV发布链接,请执行以下操作:
发布文档以获取类似https://docs.google.com/spreadsheets/d/e/{key}/pub?output=tsv
的URL。
然后为每个电子表格:
单击它。
在浏览器的地址栏中查看其URL。以edit#gid={gid}
结尾。那就是你想要的。
从步骤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能够不用下载该文档。
希望它有所帮助。