我が家では家計管理や投資用データはSpreadSheetにまとめています。
手打ちでポチポチやっているわけですが、自動化できるところは自動にしたいなーと思い、最初の一歩としてPythonから読み書きさせてみようということです。
参考リンクの内容の継ぎ接ぎですが、Google Cloud PlatformのUIが微妙に変わってたり、つまづいた所もあるので、備忘録がてら記事にしておきます。
Pythonのインストール(Mac向け)
今回はラズパイじゃなくてMacで試そうと思います。MacだとPythonはプリインストールされているみたいですが、僕の環境だとpipでモジュールを引っ張ってこれませんでした。バージョンの問題ですかね?というわけでMacにPythonを入れる所から始めます。
Homebrewを使用して新たにPythonをインストールしました。下記ページのスクリプトをターミナルに実行すればHomebrewのインストールは終了です。
Homebrewがインストールできたら、下記コマンドを実行してpythonのインストールが完了です。
$ brew install python
スプレッドシートへのアクセス
本番です。調べていると同じ事をやろうとした方が結構見つかりました。下記の要領でやればいいみたいです。
基本的な流れ
・Google Cloud Platformにてプロジェクト作成
・Google Drive APIを有効にする
・OAuth用クライアントIDの作成
・スプレッドシートにユーザーを登録
・コーディング
Google Cloud Platformにてプロジェクト作成
Google Cloud Platformにアクセスしてプロジェクトを作成します。プロジェクト名は適当でOKです。
Google Drive APIを有効にする
プロジェクト作成に続き、下記手順を踏むことでGoogle Drive APIを有効にすることができます。
OAuth用クライアントIDの作成
サービスアカウントを生成します。
ここでダウンロードされるJSONキーは後々使うので、分かりやすい場所に保存しておきましょう。
スプレッドシートにユーザーを登録
今度はGoogle スプレッドシートにアクセスして、Pythonで読み書きしたいシートに共有設定をします。
先ほど自動で取得したサービスアカウントIDを使います。
これで前準備は完了です。
コーディング
スプレッドシートの操作に使うgspread、認証に使うoauth2clientのライブラリをそれぞれインストールします。ターミナルに下記コマンドを打ち込みます。
$ pip install gspread
$ pip install oauth2client
次にコーディングです。ダウンロードしたJSONキーを使うので、同じ階層にプログラムを作成してやりましょう。
#!/usr/bin/env python
# -*- coding: utf-8 -*- import gspread
from oauth2client.service_account import ServiceAccountCredentials scope = ['https://spreadsheets.google.com/feeds'] #ダウンロードしたjsonファイルを同じフォルダに格納して指定する
credentials = ServiceAccountCredentials.from_json_keyfile_name('XXXXXXXXX.json', scope)
gc = gspread.authorize(credentials)
# 共有設定したスプレッドシートの名前を指定する
worksheet = gc.open("YYYYYYYYY").sheet1 #以下、動作テスト
# A1セルの値を取得
print worksheet.cell(1,1)
# A1セルを更新
worksheet.update_cell(1,1, u'Hello, gspread.')
jsonファイル名「XXXXXXXXX」とスプレッドシート名「YYYYYYYYY」はそれぞれご自身の環境に合わせて変更してください。
これを実行すると、無事ターミナルにセルの値が表示され、スプレッドシートには書き込みがなされてました。
gspreadのリファレンスを読むと、他にも色々操作が出来そうな感じです。
gspread API Reference — gspread 0.6.2 documentation
一先ず、スプレッドシートをPythonから書き込めるようになりました。次はスクレイピングできるようにして、Webから拾ったデータをスプレッドシートにまとめてごにょごにょ出来るようにしたいです。
Importエラーに悩んだ時
インストールしたパッケージが何故か見つからずハマりました。
原因は標準のライブラリを見に行ってしまっていたことで、パスをpipでインストールした方に変えてやることで解決できました。
pip install したパッケージをimport できないときの対応 - Qiita
importについて不勉強なので、きちんと読んでおきたいです。
参考にした記事
Pythonインストール
スプレッドシート関係
PythonからOAuth2.0を利用してスプレッドシートにアクセスする - Qiita
[Python] Google SpreadSheetをAPI経由で読み書きする - YoheiM .NET
gspreadを使ってpythonからGoogle Spreadsheetsを編集する - SCUEL開発者ブログ
こんな記事も書いています。
Python、ライブラリが豊富でいいですね。弄ってて楽しいです。
目指しているのは投資用データの自動収集です。