【コピペ】Pythonでスプレッドシートに書き込み読み取りする方法

PythonでGoogleスプレッドシートにアクセスしたい!
書き込みや読み取りがをさせたい!
今回は、Pythonからスプレッドシートにアクセスするようにするための、丸っとそのまま使えるコードを紹介します。
実際に私もPythonでスプレッドシートにアクセスするにも同じコードを使用していますので、動作については安心してもらえればと思います。
では、早速みていきましょう!
目次(クリックで読みたい部分にジャンプできます)
全体の流れ
Pythonからスプレッドシートにアクセスするためには、以下の流れで実装していきます。
- Google Cloud Consoleでプロジェクトを設定
- Google Sheets APIを有効にする
- 対象のスプレッドシートにサービスアカウントで権限をつける
- Pythonでのスクリプトの準備
スプレッドシートにアクセスするために、認証情報が必要になります。
Google Cloud Consoleで、JSONキーをダウンロードしそれを認証情報として使用します。(後述します)
①Google Cloud Consoleでプロジェクトを設定
- Google Cloud Console(https://console.cloud.google.com/)にアクセスし、プロジェクトを作成します
- ログインすると、左上でプロジェクトを選択できます。
そこから、新しいプロジェクトを作成しましょう。


- 「APIとサービス」ダッシュボードで「認証情報」を選択し、「認証情報を作成」から「サービスアカウント」を選択します

- サービスアカウントを作成し、そのアカウントのJSONキーをダウンロードします
- 作成したサービスアカウントを選択し、「キー」から鍵を追加できます。
追加したら、JSONキーをダウンロードしましょう。

②Google Sheets APIを有効にする
Google Sheets API – マーケットプレイス Google Cloud コンソール
上記のリンクから、GoogleSheetsAPIにアクセスし、有効化しましょう。

正しいプロジェクトを選択しているか確かめてくださいね!
③対象のスプレッドシートにサービスアカウントで権限をつける
先ほど作成したサービスアカウントをコピーして、
あなたが操作したいスプレッドシートに権限をつけてあげましょう。
権限をつけることで、これから紹介する「読み取り・編集」の操作が実行できるようになります。
④Pythonでのスクリプトの準備
必要なライブラリのインストール
PythonでGoogle Sheetsを操作するためには、「gspread」と「oauth2client」ライブラリを使用します。
これらのライブラリをコマンドライン(コマンドプロンプト)で以下を実行してインストールしましょう。
pip install gspread oauth2client

pip がない方は、pip3 などでインストールしてみてください。
あとは、コードを貼り付けて実行するだけです!
スプレッドシートから読み取りするコード
import gspread
from oauth2client.service_account import ServiceAccountCredentials
cell = "A1"
# スピプレッドシートから読み込み
def read_spreadsheet(cell):
# 使用するスコープ
scope = ['https://www.googleapis.com/auth/spreadsheets']
# サービスアカウントキーファイルへのパス
creds = ServiceAccountCredentials.from_json_keyfile_name('JSONキーのパスを記載', scope)
# 認証
client = gspread.authorize(creds)
# スプレッドシートのIDを使って開く(スプレッドシートのURLから取得可能)
spreadsheet = client.open_by_key('***********************************')
sheet = spreadsheet.get_worksheet(0) # 0は最初のシートを意味します
# A1セルの読み込み
value = sheet.acell(cell).value
return value
先ほどダウンロードしたJSONキーのファイルのパスを記載しましょう。
同じディレクトリに配置してしまうのが一番わかりやすいですね。
スプレッドシートに書き込みするコード
import gspread
from oauth2client.service_account import ServiceAccountCredentials
cell = "A1"
value = "書き込んじゃうよ"
def write_spreadsheet(cell, value):
# 使用するスコープ
scope = ['https://www.googleapis.com/auth/spreadsheets']
# サービスアカウントキーファイルへのパス
creds = ServiceAccountCredentials.from_json_keyfile_name('JSONキーのパスを記載', scope)
# 認証
client = gspread.authorize(creds)
# スプレッドシートのIDを使って開く(スプレッドシートのURLから取得可能)
spreadsheet = client.open_by_key('***********************************')
sheet = spreadsheet.get_worksheet(0) # 0は最初のシートを意味します
# 指定されたセルに値を書き込み
sheet.update_acell(cell, value)
読み取りするコードと同様に、キーのパスとスプレッドシートのIDを指定します。
シートは順番から取得するようにしています。今は一番左のシートを指しています。

これで、Pythonでスプレッドシートから情報を書き込み・読み取りする手順については終了です。
ぜひあなたのPythonコードに組み込んでもらえればと思います。
まとめ
今回はPythonでスプレッドシートを書き込み・読み取りする方法について紹介しました。
スプレッドシートは管理にとても便利な上にAPI連携も簡単なので、ぜひ活用してみてくださいね。
では、また!