Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Curl 从命令行下载/导出公共Google电子表格作为TSV?_Curl_Google Sheets_Google Docs Api_Google Spreadsheet Api - Fatal编程技术网

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

Curl 从命令行下载/导出公共Google电子表格作为TSV?,curl,google-sheets,google-docs-api,google-spreadsheet-api,Curl,Google Sheets,Google Docs Api,Google Spreadsheet Api,我有一个公开的(发布的)谷歌电子表格,我正试图以TSV的形式以编程方式下载 在我的浏览器中,当Google登录处于活动状态时,对于某些实际密钥$key,https://spreadsheets.google.com/feeds/download/spreadsheets/Export?key=$key&exportFormat=tsv工作并生成tsv文件 然而,在我的壳中: curl-L”https://spreadsheets.google.com/feeds/download/spread

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

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

然而,在我的壳中:

  • 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
产生了类似的结果。)


我该怎么做?到目前为止,我能找到的所有谷歌文档都是针对比简单下载和格式更改更复杂的问题,如果我的问题的解决方案在那里,我还没有找到它。

私人文件需要下载OAuth授权凭据。您可以在Google Drive API的指南上阅读更多关于此过程的信息。

我发现这是一个令人沮丧的未记录过程。我肯定在某处有记录。。。但我一直没找到

前提是你的谷歌表单是公开发布的。对很多人来说,这不是直觉。(选择文件->发布到Web…)

发布工作表时,将为您提供如下url以进行复制:
https://docs.google.com/spreadsheets/d/1XsfK2TN418FuEstNGG2eI9FmEV-4eY-FnndigHWIhk4/pubhtml

该url是很好的浏览。。。但这不是我想要的可下载的CSV。通过漫长的搜索和反复试验,我得出了以下结论:

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


我觉得这非常有帮助。我希望有人能在评论中加入官方文件的链接,更详细地解释这一点。

我的答案是关于如何找到答案

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

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

这将打开html。。。调试器

在调试器窗口的顶部,选择网络

现在,在您的文档中,启动下载,因为您正在尝试自动化

在调试器中,它将向您显示发出的任何web请求。第一个新的可能就是你想要的

您应该能够右键单击->复制->复制链接地址

url包含一个ID。我不知道它的用途,但是curl能够下载文档而不需要


希望对您有所帮助。

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

  • 文件=>发布到Web
  • 选择要下载的工作表和格式
  • 点击发布
  • 复制链接
  • 然后使用它:

    wget -O ./filename.csv "LINK"
    

  • 在我的情况下,它按预期工作

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

    output=tsv
    output=csv
    
    要添加到:有一个
    gid=
    参数,允许您选择要查看的工作表(因为CSV和TSV只支持查看一个工作表)。这是一个工作表ID,您可以从每个工作表的URL中获取它

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

  • 发布文档以获得类似
    https://docs.google.com/spreadsheets/d/e/{key}/pub?输出=tsv

  • 然后,对于每个电子表格:

  • 点击它

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

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

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


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

    看起来像是身份验证问题。尝试注销你的谷歌帐户?(奇怪的是,CSV工作正常,TSV失败。)它不是一个私有文件。不知何故,如果我包括
    gid=0
    ,那么我将得到一个页面未找到错误,但如果我不包括它,那么我会得到预期的结果。顺便说一句,
    gid=0
    仍然适合我。但对该评论的投票表明,有时删除它是很重要的。如果我知道答案是可选的/强制的/禁止的,我会更新它。对于GID,请参见下面。如果您返回HTML,则需要将
    -L
    标记添加到curl(
    curl-L)https://......“
    )很好的方法。“网络”选项卡中的链接太多。我似乎已经找到了我想要的——因为我在浏览器上尝试了,并开始下载。但我无法制作“curl{LINK}”下载。当我执行“curl{publushedURL+correctGID}时,我会得到一个“临时重定向”。另外,我可以使用在将文件发布到web后提供的链接下载该文件CSV@Manthan_Admane,我只是用
    &gid=…
    试了一下,它可以作为expe使用
    output=tsv
    output=csv