今回はPythonでのスプレッドシート活用についてまとめます。
Python, 自動化って言葉をよく耳にするがどう活用できるものか…?
自動化プログラムってなんかスゴそうではあるものの、初心者には無理なのでは…?
pythonなどのプログラミングをかじりはじめると、興味が出てくる自動化の話。
これはどういうものなのか?そしてどうやれば簡単に出来るのか?
最近、ここもかじってみたところ、私のような初心者でもサクッと出来るものであったので備忘録としてまとめます。
Pythonでもっと効率化・自動化したい!という初心者の方の一助になれば幸いです(‘ω’)ノ
今回の論点整理

さて、今回ですがクラウド上で手持ちのデータを管理するために
「Google スプレッドシートにPythonのデータフレームを流し込む」
ことを実現させます。
これが実現できることで、ローカルで持つデータやスクレイピングなど外部から引き抜いたデータをクラウドに保存することが出来るようになります。
これが出来ることで、デバイスに依存せずにデータを共有したり、その後のデータ分析に繋ぐことができます。
そのため、今回は下記のポイント3点について述べていきます。
- スプレッドシートとの連携で必要なこと
- Googleの認証の初期設定
- GoogleとPythonの連携設定とコード
順に触れていきます。
Python自動実行のポイント

スプレッドシートとの連携で必要なこと
まずPythonとGoogleスプレッドシートとを連携させるためには下記の3点が必要です。
- Googleのアカウント
- Google Cloud APIの設定
- 連携させるための設定・ライブラリ
1点目のアカウント発行(無料)に関しては言わずもがなですが、2点目のAPIの設定が普段使う事がないのでややこいです。
逆に2点目さえクリアすれば、連携用のライブラリは既にできあがっているものがあるため、3点目は悩むことはほぼありません。
そのため、下記では2点目の流れについて触れていきます。

Google系サービスはWindowsもMacもiOSもデバイス依存しないのがイイですね!
Googleの認証の初期設定
ではまず、設定環境であるGoogle Cloud Platformにアクセスします。
■ご参考リンク(Google Cloud PlatformのAPIライブラリ)
この後にやることは以下の3ステップです。
- STEP①:新しいプロジェクトを創る
- STEP②:APIを設定する
- STEP③:認証キーとトークンを発行する
STEP①:新しいプロジェクトを創る
まずは上記サイトにとんだあとに下記を押して新しいプロジェクトを作ります。

その後に適当な名前を付けて保存をします。

これで終わりです。とっても簡単です。
STEP②:APIを設定する
ここではGoogleスプレッドシートの他、それを保管するGoogle DriveもPythonからアクセスが出来るようにAPI認証の設定をします。



STEP③:認証して秘密鍵を発行する
まずは認証情報を登録します。

次に認証情報を作成からサービスアカウントをクリックします

サービスアカウント名や説明は適当な名前を入れて続行します。

ロールはオーナーになっていることを確認します。

これで認証は完了です。
その後に、Python側からアクセスするための秘密鍵を発行します。
まずは認証情報に戻り、下記の発行したサービスアカウントをクリックします。

キーを選んで鍵を追加を押し、新しい鍵を作成をクリックします。

JSONファイルを選択して作成を押します。

これで秘密鍵の発行が完了です。恐らくメモ帳ファイルがダウンロードされます。
分かりづらいのがこの.jsonファイルは実行ファイルで読み込む形になるのでpythonファイル(.py)と同じ作業場所に置いておくのが無難です。

あまり見慣れないファイルだけど内容は初心者にも優しいレベルだね
GoogleとPythonの連携設定・コード
ここまで来たら後は簡単です。
該当のスプレッドシートを指定して、そこにデータを流し込みます。
スプレッドシートの指定方法
スプレッドシートには指定のIDが付与されています。
それをPythonファイルで指定することで該当ファイルに流し込むことが出来ます。
具体的に、スプレッドシートのどこにIDがあるかというと、実はURL内にあります。

上記『dos.google.com/spreadsheets/d/~~~/edit#gid=0』とあるアドレスの~~~の箇所(赤い■にした箇所)が該当IDになります
そのため、指定のスプレッドシートを開いた後に、ここをコピペしましょう。
スプレッドシートと連携するコード
スプレッドシートとの連携のコードは下記のように記載すればOKです。
import gspread
import json
from oauth2client.service_account import ServiceAccountCredentials
from gspread_dataframe import get_as_dataframe, set_with_dataframe
# (1) Google Spread Sheetsにアクセス
def connect_gspread(jsonf,key):
scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']
credentials = ServiceAccountCredentials.from_json_keyfile_name(jsonf, scope)
gc = gspread.authorize(credentials)
SPREADSHEET_KEY = key
worksheet = gc.open_by_key(SPREADSHEET_KEY).sheet1
return worksheet
# ここでjsonfile名と用意したkeyを入力
jsonf = "★用意したファイル.json"
spread_sheet_key = "★スプレッドシートのID"
ws = connect_gspread(jsonf,spread_sheet_key)
# 予め用意したデータフレーム(df)を指定のスプレッドシートに反映させる
ws.append_rows(df.values.tolist())
基本的に変更するべき点は以下の2点のみです。
- ★用意したファイル.json
➡ 上記で発行した秘密鍵のファイル(json)名を入力 - ★スプレッドシートのID
➡ 上記で確認したスプレッドシートのIDを入力
ここを変えるだけで実行はできるはずです。
試しにdfに適当なデータフレームの値を入力して、手元のスプレッドシートに反映するか確かめてみることをオススメします。
尚、上記が通れば、下記のようなプログラムと組み合わせて、自動でデータを収集して、クラウドでデータを更新するようなプログラムが出来ます。

一連の流れを一度作ってしまえば自力で拡張することは簡単です。
まとめ

今回ポイントしてまとめてきたのは以下の3点です。
- スプレッドシートとの連携で必要なこと
▷Googleアカウントを準備をするだけでOK - Googleの認証の初期設定
▷Google Cloud APIで設定を3ステップで行う - GoogleとPythonの連携設定とコード
▷設定したjsonファイルとスプレッドシートIDを使って連携させる
上記を順に追っていけば、簡単に自動化のプログラムを作成することができます。
普段使っている一連の作業を自動的に行うことができると、ムダ時間を排除し、想像以上に楽になれてテンションが上がります。
そして、何と言っても素晴らしいのが、全て無料ソフトでできる!ということです。
余計なソフトの導入も不要で、拡張性の高いツールなので私のような非エンジニアでも押さえておくべき内容だと思います。
今後も自動化の波は続くと思うので、身近なところからデータを整理する習慣を共に作っていきましょう(‘ω’)ノ
ご精読頂きありがとうございました!
m(_ _)m
▼オススメ参考書▼