Google スプレッドシートをpythonで操作する

More than 1 year has passed since last update.


Abstract

Google スプレッドシートをpython用ライブラリgspreadを通して読み書きします.流れはよくまとまった記事に書かれている感じです.


下準備

全体的に先人の記事の劣化コピーです.


APIの有効化

まずGoogle Developers Consoleで適当にプロジェクトを作成します(今回はtestとします).ダッシュボードからAPIとサービスの有効化をクリックしてGoogle Sheets APIを有効にしましょう.


OAuth用クライアントIDの作成

「認証情報」→「新しいクライアントIDを作成」→「サービスアカウント」を選択して「クライアントIDを作成」しましょう.サービスアカウントが初めての場合は新しいサービスアカウントでサービスアカウント名を入力しましょう(役割はよくわからなかったのですが役割なしで作成できたので今回は役割なしでいきます).jsonファイルがダウンロードされれば成功です.

Inked認証_LI.jpg


Google スプレッドシート側の準備

読み書きしたいシートを先ほどのプロジェクトと共有する必要があります.Google スプレッドシートを開いて共有をクリックしてメールアドレスを入力します(ダウンロードしたjsonファイルのclient_emailをコピペするだけです).

これで下準備は完了です.


シートを読み書きするソースコード


ライブラリのインストール


$ pip install oauth2client
$ pip install gspread


シートの取得


gsheet.py

from oauth2client.service_account import ServiceAccountCredentials

from httplib2 import Http
import gspread

scopes = ['https://www.googleapis.com/auth/spreadsheets']
json_file = 'hoge.json'#OAuth用クライアントIDの作成でダウンロードしたjsonファイル
credentials = ServiceAccountCredentials.from_json_keyfile_name(json_file, scopes=scopes)
http_auth = credentials.authorize(Http())

# スプレッドシート用クライアントの準備
doc_id = 'docname'#これはスプレッドシートのURLのうちhttps://docs.google.com/spreadsheets/d/以下の部分です
client = gspread.authorize(credentials)
gfile = client.open_by_key(doc_id)#読み書きするgoogle spreadsheet
worksheet = gfile.sheet1


これでシートをとってくるところまでできました.次に読み書きしていきます.


シートに読み書き

宗定洋平さんのブログに便利な機能はまとまっています.今回はセルに何か書き込まれている場合は何もせずに,何も書き込まれていない場合は標準入力をセルに書き込むことにします.


gsheet.py

cell_list = worksheet.range('A1:A60')

for cell in cell_list:
if len(cell)>0:#セルに何か書き込まれている場合
continue
else:
do_something()
worksheet.update_acell(cell.row,cell.col,input())