77Lifeworkベータ版

77Lifeworkベータ版

IT関係の話(ツール開発・インフラ構築)をメインとして、その他私の趣味や雑記用のブログです。ここに書いた内容が少しでも参考になれば嬉しいです。

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

はじめに

今回はPythonのプログラムからGoogleスプレッドシートの内容を読み込んだり、スプレッドシートに対して値を書き込んだり、をはじめとする、Pythonとスプレッドを連携させるための設定方法を書いていきます。

これができると、Pythonスクレイピングした情報をスプレッドシートで管理、共有することができるようになります。
スプレッドシートはクライアントPCの環境に依存せずに使用できるので、何かと便利ですよね。会社で使っている方も多いのではないでしょうか。

Google Cloud PlatformのAPI設定

まずはGoogleアカウントにログインした状態で、以下のリンクを開きましょう。
Googleのアカウントを持っていない場合は、新規登録しておきましょう。
console.cloud.google.com



リンク先を開くと以下の画面が表示されるので、「プロジェクトの選択」をクリック。
f:id:J-back:20191006234515p:plain:w600



「新しいプロジェクト」を選択。
f:id:J-back:20191006234556p:plain:w600



プロジェクト名を入力し、「作成」を選択。
f:id:J-back:20191006234633p:plain:w600



APIとサービス」の「ライブラリ」を選択。
f:id:J-back:20191006234723p:plain:w600



「プロジェクトの選択」をクリック。
f:id:J-back:20191006234821p:plain:w600



先ほど作成したプロジェクトを選択。
f:id:J-back:20191006235000p:plain:w600



以下の画面が表示されます。
f:id:J-back:20191006235108p:plain:w600



Google Drive」と入力して検索し、「Google Drive API」を選択します。
f:id:J-back:20191007000658p:plain:w600




「有効にする」を選択。
f:id:J-back:20191007000822p:plain:w600



以下の画面が表示されます。
f:id:J-back:20191007000901p:plain:w600



今度は「Google Sheets」と入力して検索し、「Google Sheets API」を選択します。
f:id:J-back:20191007000934p:plain:w600



「有効にする」を選択。
f:id:J-back:20191007001039p:plain:w600



以下の画面が表示されます。
f:id:J-back:20191007001112p:plain:w600

認証情報の設定

次に、メニューバーから、「認証情報」を選択します。
f:id:J-back:20191007003204p:plain:w600



「認証情報を作成」をクリックし、「サービス アカウント キー」を選択します。
f:id:J-back:20191007003252p:plain:w600



サービスアカウント名に任意の値を入力します。
f:id:J-back:20191007003457p:plain:w600



役割は「Project」の「編集者」を選択し、「作成」をクリックします。
f:id:J-back:20191007003540p:plain:w600



json形式のファイルがPCにダウンロードされます。
f:id:J-back:20191007003709p:plain:w600



サービス アカウント キーにIDが作成されていればOKです。
f:id:J-back:20191007003833p:plain:w600



ここで、ダウンロードしたjsonファイルを開くと

"client_email": "XXXXXXXX@YYYYYYYY"

と記載されている箇所があるので、「XXXXXXXX@YYYYYYYY」をコピーしておきましょう。


スプレッドシート側の設定

Pythonから操作したいスプレッドシートを開き、右上の「共有」をクリックします。
f:id:J-back:20191008000812p:plain:w600



「ユーザー」の部分に、先ほどコピーした「"client_email": "XXXXXXXX@YYYYYYYY",」の「XXXXXXXX@YYYYYYYY」を貼り付けます。
f:id:J-back:20191008001300p:plain:w600

これでスプレッドシートの設定は完了です。

必要なパッケージをインストール

以下2つのパッケージが必要となります。
・gspread
・oauth2client


以下コマンドを実行してインストールします。

pip install gspread
pip install oauth2client


または、環境によっては以下のコマンドとなります。ご自身の環境にあったものを実行してください。

pip3 install gspread
pip3 install oauth2client

これを実行すると、以下のような表示となります。
f:id:J-back:20191008002820p:plain:w600


f:id:J-back:20191008002839p:plain:w600


これでパッケージインストールはOKです。

Pythonプログラムを編集

以下のコードを作成し、実行しましょう。


# coding: UTF-8
import gspread
from oauth2client.service_account import ServiceAccountCredentials
  
scope = ['https://spreadsheets.google.com/feeds',
         'https://www.googleapis.com/auth/drive']
  
#jsonファイルを指定
credentials = ServiceAccountCredentials.from_json_keyfile_name('各自のjsonファイル名を入れてください', scope)
  
# 認証
gc = gspread.authorize(credentials)
  
# 読み込むスプレッドシートをファイル名で指定
target_book = gc.open('test_sheet')
  
# 読み込むシートをシート名で指定
target_sheet = target_book.worksheet('シート1')
  
#対象のセルに文字列を書き込み
target_sheet.update_acell('A1', 'test')


これを実行すると、以下のようにスプレッドシートのA1セルに「test」と書き込まれました!
f:id:J-back:20191008004650p:plain:w600


なお、上記プログラムを実行する際は、Pythonのファイルと同じ場所にjsonファイルも配置しておいてくださいね。

最後に

PythonのプログラムからGoogleスプレッドシートを操作する設定について書きました。これを応用すればPythonで集めたデータや解析結果などをスプレッドシートで管理することもできますね。

最後まで読んでいただき、ありがとうございました。