web-dev-qa-db-ja.com

未公開のGoogleスプレッドシートをCSVとしてダウンロード

公開されていないが、アクセスリンクを持っている人なら誰でも利用できるGoogleスプレッドシートがあります。 Googleアカウントにログインしていなくても(つまり、匿名アクセスが許可されていても)ブラウザからCSV形式のデータにアクセスできますが、wgetを使用してコマンドラインからデータをダウンロードする方法はありません。 。ダウンロードURLを作成するためのいくつかの手順が記載されたWebページをいくつか見つけましたが、これまでのところ成功していません。これを行う簡単で簡単な方法はありますか、それともそのデータにアクセスするためにGoogleデータライブラリを使用する必要がありますか?

17

これで質問に答えられるようになったので、(前のコメントから貼り付けて)永久に答えたままにしておきます。

私の問題は、クッキーを正しく保存していなかったことです。当時、私はPythonプログラムを使用してこれをダウンロードしようとしていました。これにより、報告していた問題が修正されました。

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

たぶん私はあなたがやろうとしていることを正しく理解していませんが、私は解決策を見つけました この記事で それは私にとってうまく機能します。

この記事では、作成者がスプレッドシートのダウンロードリンクをXLSファイルとして作成します(「&output = xls」を使用)が、「&output = csv」を試して、正しいCSVファイルを正常にダウンロードしました。

これが私の「ダウンロードテストスプレッドシート」へのダウンロードリンクです。記事の作成者が提案したとおりに作成されていますが、「xls」の代わりに「csv」が使用されています。

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/<KEY>/export?gid=<GID>&format=csv
どこ <KEY>および<GID>は、ナビゲーションのURLから取得できます。
https://docs.google.com/spreadsheets/d/<KEY>/edit#gid=<GID>

PS:スプレッドシートには複数のワークブックが含まれている場合があります。[〜#〜] gid [〜#〜]が目的のワークブックIDです。 1つのワークブックのスプレッドシートには通常gid=0ですが、さらに追加すると乱数が発生します([〜#〜] gid [〜#〜]は、タブの順序を変更しても事前に保存されます)。

したがって、wgetと同じスプレッドシートを使用して、

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

次のような公開スプレッドシートURLからwget可能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"

最初に右上の青い[共有]ボタンでスプレッドシートを共有し、次に[共有可能なリンクを取得]で共有してください。

18
cgenco