LoginSignup
5
3

More than 5 years have passed since last update.

GoogleスプレッドシートAPI(v4)のクイックスタートのサンプルプログラムを削れるだけ削ってみる

Last updated at Posted at 2017-03-24

※Windowsのpython3.6.0で動作確認

GoogleDriveのスプレッドシートのファイルをpythonで読み出したいけど、Googleのサンプルなにやってるのかわかんねーよ、とりあえず読みたいんだよ、という人向け。

元ネタ
https://developers.google.com/sheets/api/quickstart/python
まずはSTEP2まで頑張ってください。

それではSTEP3のプログラムの部分です

# coding:utf-8
import httplib2

import apiclient
import oauth2client

# 設定
# -----------------------------------------------------------------------------
SCOPES = 'https://www.googleapis.com/auth/spreadsheets.readonly'  # 読み込み許可を求める
APPLICATION_NAME = 'read sample'  # 日本語通らないので英文字のみで

SHEET_ID = 'スプレッドシートのファイルID。ファイル編集時のURLから拾える'
SHEET_TAB = 'スプレッドシート内のシート名'
RANGE = 'A1:Z1000'  # 読み込む範囲
# -----------------------------------------------------------------------------


# 認証ファイルの読み込み
store = oauth2client.file.Storage("./credential.json")  # 認証ファイルある?
credentials = store.get()

# 未認証だった場合は許可を求める(ブラウザ認証)
if not credentials or credentials.invalid:
    flow = oauth2client.client.flow_from_clientsecrets('client_secret.json', SCOPES)
    flow.user_agent = APPLICATION_NAME

    # 初回認証
    import argparse
    args = '--auth_host_name localhost --logging_level INFO --noauth_local_webserver'
    flags = argparse.ArgumentParser(parents=[oauth2client.tools.argparser]).parse_args(args.split())

    credentials = oauth2client.tools.run_flow(flow, store, flags)  # ブラウザ認証で許可すると認証ファイルが作成される

# 認証ファイルを使って接続
http = credentials.authorize(httplib2.Http())

# シートの読み込み
service = apiclient.discovery.build('sheets', 'v4', http=http, discoveryServiceUrl='https://sheets.googleapis.com/$discovery/rest?version=v4')
values = service.spreadsheets().values().get(spreadsheetId=SHEET_ID, range=SHEET_TAB+'!'+RANGE).execute().get('values', [])

# valuesを使って色々やれるよ
print(values)

エラー処理とかは各自追記してくだせぇ(:3」∠)

おまけ

スプレッドシートの中のシートを全部読みたいときは、SHEET_TABを固定値じゃなくメタデータのシートのリストから取得すると便利です。

# シートの読み込み
# サービスの取得は一緒
service = apiclient.discovery.build('sheets', 'v4', http=http, discoveryServiceUrl='https://sheets.googleapis.com/$discovery/rest?version=v4')

# valuesを読み込む前に、シートの名前を取得する
sheet_meta = service.spreadsheets().get(spreadsheetId=SHEET_ID).execute()
for sheet in sheet_meta.get('sheets', ''):
    # sheet名取得
    SHEET_TAB = sheet.get("properties", {}).get("title", 0)

    # ここも一緒(直前でSHEET_TAB上書きしてる)
    values = service.spreadsheets().values().get(spreadsheetId=SHEET_ID, range=SHEET_TAB+'!'+RANGE).execute().get('values', [])

    # valuesを使って色々やれるよ
    print(values)
5
3
1

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
5
3