IT 暮らしの最適化

30分で完了!Google Sheets API をPythonで設定する手順

こんにちは、あひるです🐤

メーカーのデータサイエンティストとして働きながら、家計や資産運用のデータ分析を趣味でやっています。日々の分析で「Pythonで自動的にスプレッドシートにデータを書き込みたい」場面が何度もあります。

たとえば、わが家では MoneyForward から投資信託データを自動取得して Google スプレッドシートに蓄積しています。詳しくは 【Money Forward】PythonとLooker Studioを使って抽出・可視化してみた でまとめていますが、この自動化を支えているのが Google Drive API と Google Sheets API です。

以前の記事

でも最初の設定って、正直めんどくさいですよね。「どこで何を有効にするの?」「サービスアカウントって何?」と迷って挫折した経験はありませんか?

この記事では、Google Sheets API を Python(gspread)から使えるようにするまでの設定手順を、スクリーンショット付きで丁寧に解説します。初めて触る方でも、この記事を読めば 30 分以内に動作確認まで完了できます。

それでは、Let's go 🚀


なぜ Google Drive API・Sheets API が必要なの?

Python でスプレッドシートを読み書きするには、Google の API を通じて「このプログラムに操作を許可する」という認証設定が必要です。

具体的には、以下の 2 つの API を有効にします。

  • Google Sheets API:スプレッドシートのセルを読み書きするための API
  • Google Drive API:ドライブ上のファイル(スプレッドシートを含む)にアクセスするための API。gspread の認証に必要

設定の全体像はこうです。

  1. Google Cloud Console でプロジェクトを作成
  2. Drive API・Sheets API を有効化
  3. サービスアカウントを作成して JSON キーをダウンロード
  4. スプレッドシートにサービスアカウントを共有設定
  5. Python(gspread)で動作確認

ひとつずつ丁寧に説明していきます!


① Google Cloud Console でプロジェクトを作成する

まず Google Cloud Console(https://console.cloud.google.com/)にアクセスします。Google アカウントでログインしてください。

画面上部の「プロジェクトの選択」をクリックし、「新しいプロジェクト」を選択します。

プロジェクト名は何でも OK です。例えば my-sheets-project のような分かりやすい名前を付けましょう。「作成」ボタンをクリックすると数秒でプロジェクトが作成されます。


② Google Drive API・Sheets API を有効化する

プロジェクトを作成したら、使う API を有効化します。左メニューから「API とサービス」→「ライブラリ」を開いてください。

まず Google Drive API を有効にします。検索欄に「Google Drive」と入力して候補をクリックし、「有効にする」ボタンを押します。

続いて Google Sheets API も同じ手順で有効化します。検索欄に「Google Sheets」と入力して「有効にする」ボタンをクリックします。

注意

Drive API と Sheets API の両方を有効にしてください。どちらか一方を忘れると gspread の認証時にエラーになります。よくあるミスなので要注意!


③ サービスアカウントを作成して JSON キーをダウンロードする

API を有効化したら、Python プログラムが Google にアクセスするための「鍵」を作成します。この鍵が入ったファイルを「サービスアカウント JSON キー」と呼びます。

悩める人

「サービスアカウント」って何ですか?普通の Google アカウントと何が違うの?

サービスアカウントは「人間ではなくプログラム専用の Google アカウント」のイメージです。パスワードではなく JSON キーで認証するので、スクリプトに自動でログインさせるときに使います。

あひる

左メニューから「API とサービス」→「認証情報」を開き、「認証情報を作成」→「サービスアカウント」を選択します。

サービスアカウント名を入力(例:sheets-writer)して「作成して続行」をクリック。ロールの設定は「オーナー」または「編集者」を選んでください。確認画面は「完了」で進みます。

作成したサービスアカウントの一覧画面に戻り、作成したアカウント名をクリック。「キー」タブ→「キーを追加」→「新しいキーを作成」→「JSON」を選択して「作成」をクリックすると、JSON ファイルが自動でダウンロードされます。

セキュリティ注意

ダウンロードした JSON ファイルには秘密鍵が含まれています。GitHub などに公開しないよう、.gitignore に必ず追加してください。他人に見せると Google アカウントを不正利用される可能性があります。


④ スプレッドシートへの共有設定

最後に、操作したいスプレッドシートをサービスアカウントと共有します。これをしないと「権限がない」というエラーになります。

手順はシンプルです。

  1. 先ほどダウンロードした JSON ファイルをテキストエディタで開き、"client_email" の値(sheets-writer@your-project.iam.gserviceaccount.com のようなメールアドレス)をコピーする
  2. 操作対象の Google スプレッドシートを開き、右上の「共有」ボタンをクリック
  3. コピーしたメールアドレスを「ユーザーやグループを追加」欄に貼り付け、権限を「編集者」に設定して「共有」をクリック

これで Google 側の設定は完了です!ここまでできれば Python から操作する準備が整いました。


⑤ Python(gspread)で動作確認する

いよいよ Python コードを書きます。まず必要なライブラリをインストールします。

# uv を使っている場合
uv add gspread google-auth

# pip を使っている場合
pip install gspread google-auth

次に動作確認用のサンプルコードです。JSON ファイルのパスとスプレッドシートのキーを書き換えてください。

悩める人

スプレッドシートのキーってどこで確認するの?

スプレッドシートの URL を見てください。https://docs.google.com/spreadsheets/d/〇〇〇〇〇/edit の太字部分がスプレッドシートキーです!

あひる

よくあるミス

URL をブラウザのアドレスバーからそのままコピーすると、ID の後ろに /edit?gid=0#gid=0 が混入してしまいます。open_by_key()ID 部分のみ を受け取る関数なので、余分な文字列があると正しいスプレッドシートを特定できません。

# ❌ 誤り:URL をそのままコピーした場合
spreadsheet = client.open_by_key("1zJXEnDMiPX0xOLr.../edit?gid=0#gid=0")

# ✅ 正しい:/d/ と /edit の間の ID だけを渡す
spreadsheet = client.open_by_key("1zJXEnDMiPX0xOLr...")

注意が必要なのは、このミスをしてもエラーが表示されず「書き込み完了!」と出力されるケースがある点です。実行後は必ずスプレッドシートを開いてセルの値を確認してください。

import gspread
from google.oauth2.service_account import Credentials

# Google Sheets API と Google Drive API のスコープを設定
SCOPES = [
    "https://www.googleapis.com/auth/spreadsheets",
    "https://www.googleapis.com/auth/drive",
]

# gspread 認証:サービスアカウント JSON キーを読み込む
creds = Credentials.from_service_account_file(
    "your-service-account.json",  # ダウンロードした JSON ファイルのパス
    scopes=SCOPES,
)
client = gspread.authorize(creds)

# スプレッドシートを開く(URL の /d/〇〇〇/ 部分がキー)
spreadsheet = client.open_by_key("your-spreadsheet-id")
sheet = spreadsheet.sheet1  # 1枚目のシートを取得

# データを読み込む
data = sheet.get_all_values()
print("読み込んだデータ:", data)

# データを書き込む(A1 セルから 2行2列)
sheet.update("A1", [["テスト", "データ"], ["Python", "OK!"]])
print("書き込み完了!")

実行して「書き込み完了!」と表示され、スプレッドシートの A1〜B2 に値が入っていれば設定成功です🎉


🎯 まとめ:30 分で Google Sheets API の設定は完成

Google Sheets API の設定手順をおさらいします。

まとめ

  1. Google Cloud Console でプロジェクトを作成し、Drive API と Sheets API を両方有効にする
  2. サービスアカウントを作成して JSON キーをダウンロード。キーは絶対に GitHub に上げない
  3. スプレッドシートにサービスアカウントの client_email を「編集者」として共有し、gspread から動作確認

この設定ができると、Python でスプレッドシートを自在に操れるようになります。わが家では MoneyForward から投資信託データを毎月自動取得してスプレッドシートに書き込み、Looker Studio でグラフ化する仕組みを作っています。その全体像は こちらの記事 で紹介していますので、ぜひあわせてどうぞ。


📚 もっと Python 自動化を学びたい方へ

「この設定ができた!次はもっといろんな自動化に挑戦したい」という方は、Udemy で「Python 自動化」と検索してみてください。スプレッドシート操作だけでなく、Web スクレイピング・PDF 処理・メール自動送信など、業務効率化につながる技術をまとめて学べる講座が多数あります。

興味があればぜひ覗いてみてください。セール時には大幅割引になることも多いので、気になる講座はウィッシュリストに追加しておくのがおすすめです💡

-IT, 暮らしの最適化
-, , , , , , ,