【问题标题】:Download unpublished Google spreadsheet as CSV以 CSV 格式下载未发布的 Google 电子表格
【发布时间】:2012-05-24 03:22:33
【问题描述】:

我有一个尚未公开的 Google 电子表格,但任何拥有访问链接的人都可以使用。虽然即使我没有登录我的 Google 帐户(即允许匿名访问),我也可以从浏览器访问 CSV 格式的数据,但我无法使用 wget 从命令行下载数据,例如.我找到了几个网页,其中包含一些创建下载 URL 的说明,但到目前为止我还没有成功。是否有一种简单直接的方法可以做到这一点,还是我必须使用一些 Google 数据库来访问这些数据?

【问题讨论】:

    标签: csv google-sheets


    【解决方案1】:

    也许我没有正确理解你想要做什么,但我找到了一个解决方案 in this article 对我来说很好。

    在文章中,作者将电子表格的下载链接创建为 XLS 文件(使用“&output=xls”),但我尝试了“&output=csv”并成功下载了正确的 CSV 文件。

    这是我的“下载测试电子表格”的下载链接,按照文章作者建议的方式构建,但用“csv”代替了“xls”:

    https://docs.google.com/spreadsheet/ccc?key=0At2sqNEgxTf3dEt5SXBTemZZM1gzQy1vLVFNRnludHc&output=csv

    该链接是匿名的(即“知道该链接的任何人都可以查看”),我在没有登录 Google 帐户的情况下下载了它。我承认我没有使用 wget 来做到这一点(我只是使用了浏览器——我没有安装 wget),但我想不出 wget 不能正常工作的原因。

    其实我只是拿了一份 wget 试了一下,它也能正确下载文件:

    % wget --no-check-certificate --output-document=test.csv 'https://docs.google.com/spreadsheet/ccc?key=0At2sqNEgxTf3dEt5SXBTemZZM1gzQy1vLVFNRnludHc&output=csv'
    
    < bla bla bla, reams of output from wget >
    
    % cat test.csv
    Foo,Bar,Baz
    1,2,3
    4,5,6
    

    所以你去...


    2018 年更新

    @AndyMortimer 评论说,新的下载 URL
    https://docs.google.com/spreadsheets/d/&lt;KEY&gt;/export?gid=&lt;GID&gt;&amp;format=csv
    &lt;KEY&gt;&lt;GID&gt; 可以从您的导航 URL 获得 em>,
     https://docs.google.com/spreadsheets/d/&lt;KEY&gt;/edit#gid=&lt;GID&gt;

    PS:电子表格可能有多个工作簿,GID 是所需的工作簿 ID。一个工作簿电子表格通常具有gid=0,但如果您添加更多,它们将具有随机数(GID 即使更改制表顺序也会保留)。

    所以,使用wget 和同一个电子表格,

       wget --no-check-certificate -O test.csv \
        'https://docs.google.com/spreadsheets/d/0At2sqNEgxTf3dEt5SXBTemZZM1gzQy1vLVFNRnludHc/export?gid=0&format=csv'
    

    【讨论】:

    • 出于好奇,我尝试使用 wget 获取文件,同时使用“&output=xls”和“&output=txt”,这两个试验都正常工作。 (“txt”格式会导致电子表格作为制表符分隔的文件下载,如果我没有开始玩这个我不会知道。所以谢谢!我学到了一些新东西这个过程。)
    • 最终,不知为何,无法下载文件。我可以与所有者交谈以将其公开,这样我的问题就结束了。无论如何感谢您的回答。
    • 当然,不用担心。当我发现你的问题时,我实际上没有任何经验 - 我当时正试图弄清楚如何做类似的事情。所以这对我来说是一个很好的练习来弄清楚如何去做,我回答的大部分原因是记录我的发现。很高兴您能够找到如此有效的替代解决方案。 :-)
    • 尽管这个问题已经很老了,但我还是要评论一下。我的问题是我没有正确存储 cookie。当时,我正在使用 Python 程序尝试下载它。这解决了我报告的问题:# Cookie managementopener = urllib2.build_opener(urllib2.HTTPCookieProcessor(CookieJar()))csv_data = csv.reader(opener.open(url))```
    • 这个答案中给出的链接是旧的 URL 格式。有关新 URL 方案的示例,请参阅stackoverflow.com/a/23394860/305913
    【解决方案2】:

    我能够从如下所示的公共电子表格 URL 中获取 wget-able URL:

    https://docs.google.com/spreadsheets/d/LONG_ID_STRING/edit?usp=sharing
    

    通过将它们更改为如下所示:

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

    所以我的 wget 命令看起来像:

    $ wget "https://docs.google.com/spreadsheets/d/LONG_ID_STRING/export?format=csv"
    

    确保先使用右上角的蓝色“共享”按钮共享电子表格,然后使用“获取可共享链接”。

    【讨论】:

    • 使用 wget 更改文件名:wget -O FILE URL
    • 我想补充一点,第二个 LONG_ID_STRING 似乎无关紧要。以下 URL 工作正常:https://docs.google.com/spreadsheets/d/LONG_ID_STRING/export?format=csv
    • 这个解决方案对我有用。 @ArjunGuha 是正确的。秒 LONG_ID_STRING 不是必需的。
    • 已编辑删除不必要的 LONG_ID_STRING
    • 对于同一LONG_ID_STRING 中的多个电子表格不是解决方案,因为只获取第一个电子表格。 如何通过 gid 获取正确的电子表格? 典型的导航 URL 为 https://docs.google.com/spreadsheets/d/LONG_ID_STRING/edit#gid=_ID_
    【解决方案3】:

    要访问其他选项卡,您需要单击并获取该选项卡的 gid,因此:

    https://docs.google.com/spreadsheets/d/1GxmL3bbejjGx-Ji7kzsnZLzkSaMrfX5WwgRAvvqfqpw/pubhtml?widget=true&amp;amp%3Bheaders=false#gid=2120833204

    变成:

    https://docs.google.com/spreadsheets/d/1GxmL3bbejjGx-Ji7kzsnZLzkSaMrfX5WwgRAvvqfqpw/export?format=csv&amp;id=1GxmL3bbejjGx-Ji7kzsnZLzkSaMrfX5WwgRAvvqfqpw&amp;gid=2120833204

    【讨论】:

      【解决方案4】:

      现在我可以回答问题了,所以我会一直回答它(粘贴我之前的评论)。

      我的问题是我没有正确存储 cookie。当时,我正在使用 Python 程序尝试下载它。这解决了我报告的问题:

      # Cookie management 
      opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(CookieJar())) 
      csv_data =  csv.reader(opener.open(url))
      

      【讨论】:

        【解决方案5】:

        遇到这个问题并尝试了一些解决方案。没有一个工作完美,所以我写了这个 curl 似乎可以完成这项工作。您需要与知道该链接的任何人共享您的 Google 电子表格

        curl -o /path/to/file/you/want/csv/to/go.csv 'https://docs.google.com/spreadsheet/ccc?key=[the-id-of-your-spreadsheet]&output=csv' -L

        -L 是这里的技巧,谷歌经常移动 csv,但会向您发送重定向链接。 -L 告诉 curl 跟随重定向,直到它到达文件。

        您可以通过在谷歌驱动器中打开电子表格并查看网址来找到电子表格的id

        https://docs.google.com/spreadsheets/d/[idwillbehere]/edit#gid=0

        【讨论】:

        • 请您展示如何将_BIG_BASE64__ID_https://docs.google.com/spreadsheets/d/_BIG_BASE64_/edit#gid=_ID_ 映射到您的curl。电子表格中没有 ccckey 参数(复数)。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-22
        • 2020-11-08
        • 1970-01-01
        • 1970-01-01
        • 2016-02-16
        • 2020-11-05
        • 1970-01-01
        相关资源
        最近更新 更多