web-dev-qa-db-ja.com

コマンドラインから公開GoogleスプレッドシートをTSVとしてダウンロード/エクスポートしますか?

プログラムでTSV形式でダウンロードしようとしている公開(公開)Googleスプレッドシートがあります。

私のブラウザでは、Googleログインがアクティブな状態で、実際のキー$keyhttps://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を使用しようとすると、同様の結果が得られました。)

これを機能させるにはどうすればよいですか?これまでに見つけたすべてのGoogleドキュメントは、単純なダウンロードと形式の変更よりもはるかに複雑な問題を対象としています。問題の解決策がどこかにある場合は、まだ見つけることができません。 。

17
Aaron Davies

私はこれがイライラするほど文書化されていないことに気づきました。どこかに文書化されていると確信しています...しかし、私はそれを見つけたことがありません。

Googleスプレッドシートが公開されていることが前提です。これは多くの人にとって直感的ではありません。 ([ファイル]-> [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"

私はそれが非常に役立つと思います。誰かがこれをより詳細に説明している公式ドキュメントへのリンクでコメントすることを願っています。

28
mdahlman

この方法でシェルからダウンロードできます。

  1. ファイル=> Webに公開
  2. シートとダウンロードする形式を選択します。
  3. [公開]をクリックします
  4. リンクをコピーする
  5. そしてそれを使用します:

    wget -O ./filename.csv "LINK"
    

    または

    curl -L "LINK" > ./filename.csv
    

私の場合、期待どおりに機能しました。

さらに、すべての形式を公開しているので、非公開にして再公開せずにURLの最後の部分を変更して、ダウンロードするものを選択できると思います。

output=tsv
output=csv
4
Kintaro

@ mdahlmanによって書かれた回答 に追加するには:表示するシートを選択できるgid=<value>引数があります(CSVおよびTSVは1枚のシートの表示のみをサポートしているため)。これはシートIDであり、各シートのURLから取得できます。

したがって、CSV/TSV公開リンクを取得するには、次のようにします。

  1. ドキュメントを公開して、https://docs.google.com/spreadsheets/d/e/{key}/pub?output=tsvのようなURLを取得します。

  2. 次に、スプ​​レッドシートごとに:

    1. クリックして。

    2. ブラウザのアドレスバーにそのURLを表示します。 edit#gid={gid}で終わります。それがあなたが望むものです。

    3. 手順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の1つがゼロでした。ある種のデフォルトまたは最初に作成されたシートだと思います。これが、gid=0が上記の一部の人には機能したが、他の人にはエラーが発生した理由を説明しています(そのようなGIDのシートを持っていない人...おそらくそれを削除したか何か)。

0
Vedran Šego

私の答えは、答えを見つける方法についてです。

Chromeブラウザで、Googleドキュメントに移動します。

ブラウザの右上隅にある3つのドット->その他のツール->開発者ツールに移動します

これにより、html ...デバッガーが表示されます。

デバッガウィンドウの上部で、[ネットワーク]を選択します。

ドキュメントで、自動化しようとしているダウンロードを開始します。

デバッガーでは、行われたWeb要求が表示されます。最初の新しいものはおそらくあなたが望むものです。

右クリック->コピー->リンクアドレスのコピーができるはずです

URLにはIDが含まれています。何のためにあるのかわかりませんが、curlはそれなしでドキュメントをダウンロードすることができました。

お役に立てば幸いです。

0
mmccoo

プライベートファイルをダウンロードするには、OAuth認証情報が必要です。プロセスの詳細については、GoogleドライブAPIの ファイルのダウンロード ガイドをご覧ください。

0
Eric Koleda