3
3

More than 3 years have passed since last update.

Google spreadsheet を wget でダウンロードしたい

Last updated at Posted at 2020-04-06

はじめに

  • Google Spreadsheetはとても便利
  • ただし、データ分析に使う時にブラウザからダウンロードするのがめんどくさい
  • コマンドラインでダウンロードできれば、ますます便利なのではないか

検索 & 要約

  • google spreadsheet wgetでぐぐったら、以下の Stack Overflow がヒットした
  • 上記の回答を読んで、最終的に以下のコマンドでよいことが分かった
wget -O {FILENAME} 'https://docs.google.com/spreadsheets/d/{KEY}/export?gid={GID}&format={FORMAT}'
  • --no-check-certificateオプションはつけなくてもOK
  • -O {FILENAME} でファイル名を指定
    • 拡張子はダウンロード形式に合わせる
  • {KEY}はスプレッドシートのID
    • シートのURLを上記のフォーマットと見比べる(見ればわかるはず)
  • {GID}はスプレッドシート内のシートID
    • 一番最初に作ったシートはgid=0
    • 別のシートを指定する場合は、そのシートのURLを確認するとgid=NNN(ランダムな数字)となっている

ダウンロード用のスクリプトを書いた

  • Python3subprocessモジュールを使ってみた
  • wgetしたファイルはdownloads/snapshot.xlsxといった名前で保存することにした
    • エラーがでないようにdownloadsのディレクトリを作っておく($ mkdir downloads
import subprocess

def gsheet_url(key, fmt, gid):
    '''
    key : スプレッドシートのID
    fmt : ダウンロード形式
    gid : シートのID
    '''
    path = f'https://docs.google.com/spreadsheets/d/{key}/export'
    query = f'format={fmt}'
    if not gid is None:
        query += f'&gid={gid}'
    url = f'{path}?{query}'
    return url

def gsheet_wget(key, fmt, gid=None):
    '''
    snapshot.{fmt} というファイル名で、downloads/ に保存する
    '''
    ofn = f'snapshot.{fmt}'
    url = gsheet_url(key, fmt, gid)
    cmd = ['wget', '-O', fname, url]
    subprocess.run(cmd, cwd='downloads')
    return cmd

テストしてみた

全部の形式でダウンロードしてみた

formats = ['xlsx', 'ods', 'pdf', 'zip', 'csv', 'tsv']
key = '1NbSH0rSCLkElG4UcNVuIhmg5EfjAk3t8TxiBERf6kBM'  # テスト用の公開シート

for fmt in formats:
    print(f'ダウンロード形式 : {fmt}')
    cmd = gsheet_wget(key, fmt)
  • zip:中身はシート別のhtmlファイルとレイアウト用のCSSファイル
  • csvシート1(=gid=0)だけになる
  • tsvシート1(=gid=0)だけになる

シート2だけを指定してダウンロードしてみた

  • gidを指定する
formats = ['xlsx', 'ods', 'pdf', 'zip', 'csv', 'tsv']
key = '1NbSH0rSCLkElG4UcNVuIhmg5EfjAk3t8TxiBERf6kBM'  # テスト用に作った公開シート
gid = 1772074296  # シート2のID

for fmt in formats:
    print(f'ダウンロード形式 : {fmt}')
    cmd = gsheet_wget(key, fmt, gid)

まとめ

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3