# 【目指せ自動化】Pythonでスプレッドシートを操作して書き込み・読み込みを行う方法！

> 当サイト【スタビジ】の本記事では、Pythonでスプレッドシートを操作する方法について解説していきます。スプレッドシートの面倒な作業をPythonで自動化していきましょう！

- URL: https://toukei-lab.com/python_spreadsheet
- 公開: 2024.07.24 / 更新: 2026.01.27
- サイト: スタビジ（https://toukei-lab.com）

:::talk{who="umatan"}
当サイト【スタビジ】の本記事では、Pythonでスプレッドシートを操作する方法について解説していきます。スプレッドシートの面倒な作業をPythonで自動化していきましょう！
:::

こんにちは！スタビジ編集部です！

この記事では<mark>Pythonを使ってスプレッドシートを操作する方法について解説します！</mark>

仕事でもプライベートでもよく利用される”**スプレッドシート（Google spreadsheets）**“！

ただ、以下のように感じる方も多いのではないでしょうか。

:::talk{who="man" side="left"}
スプレッドシートにデータを集めたはいいけど、手動で整理するのが面倒、、、
:::

:::talk{who="woman"}
クラウドの利点を生かして、作業を効率化したい！
:::

こんな悩みはPythonと組み合わせることで解決できることが多いです！

:::talk{who="umatan"}
Pythonでスプレッドシートを扱う方法をマスターして、面倒な作業をどんどんラクにしていこう！
:::

Pythonでの自動化については以下の記事で詳しく解説しているので参考にしてみて下さい。

<https://toukei-lab.com/python-automation>

より詳しくGoogleスプレッドシートを操作して業務を効率化する方法を学びたい人は以下のUdemyコースをチェックしてみてください！

:::box
[【初心者向け】PythonでGoogleスプレッドシートを操作して煩雑な日々の業務を効率化・自動化する方法を学ぼう！](https://www.udemy.com/course/python-spreadsheet/?referralCode=CA4DA55DA9B31F2AF30C)

[![Udemy_spreadsheet](/wp-content/uploads/2024/09/Udemy_spreadsheet.jpg)](https://www.udemy.com/course/python-spreadsheet/?referralCode=CA4DA55DA9B31F2AF30C)

<table class="table">
<tbody>
<tr>
<th>【時間】</th>
<td><span>3.5時間</span></td>
</tr>
<tr>
<th>【レベル】</th>
<td><span>初級</span></td>
</tr>
</tbody>
</table>

Pythonでスプレッドシートを操作したいならこれ！今なら購入時に「NZWCLGF4BTZENY6E」という講師クーポンコードを入れると90%オフ以上の割引価格になりますのでぜひご受講ください！

::button[このコースを見てみる]{href="https://www.udemy.com/course/python-spreadsheet/?referralCode=CA4DA55DA9B31F2AF30C" note="＼30日以内なら返金無料／"}
:::

また、Pythonについて基礎から体系的に学びたい人は当メディアが運営する「スタアカ」の以下のコースをチェックしてみて下さい。

:::box
**[スタアカ「03.Python基礎」](https://toukei-lab.com/achademy/courses/python-beginner/)**
:::

## Pythonでスプレッドシートを操作するメリット

まずは**Pythonでスプレッドシートを操作するメリット**について見ていきましょう。

Pythonでスプレッドシートを操作するメリットは以下です。

:::box
**・作業の自動化**\
**・Pythonライブラリによるデータ解析**\
**・他のクラウドサービスとの連携**
:::

それぞれ見ていきましょう。

### 作業の自動化

Pythonで処理を記述することで<mark>手動で行っている作業を自動化することが出来ます。</mark>

スプレッドシートで行っているデータの集計やグラフの作成といった作業をPythonで自動化することで作業時間を削減や作業ミス軽減につなげることが出来ます。

:::talk{who="umatan"}
Pythonでスプレッドシートを扱うことで作業を効率化できる！
:::

PythonではX(旧Twitter)の自動化もすることが出来ます。以下の記事で解説しているので参考にしてみて下さい。

<https://toukei-lab.com/python_twitter>

### Pythonライブラリによるデータ解析

Pythonでは”**[pandas](/python-pandas)**“や”**[Numpy](/numpy)**“など、<mark>データ処理や分析のためのライブラリが多くあります。</mark>

そのため、Pythonで操作することでスプレッドシートで集めたデータをそのまま処理・分析することが可能になります。

:::talk{who="umatan"}
スプレッドシートで手動で操作するよりも、Pythonのライブラリを活用することでより効果的なデータ解析が出来る！
:::

### 他のクラウドサービスとの連携

Pythonは他の様々なクラウドサービスと接続することが出来ます。

そのため、Pythonを利用すること<mark>でスプレッドシートのデータを他のクラウドサービスと連携させるといった使い方も可能です。</mark>

:::talk{who="umatan"}
例えばPythonを使ってスプレッドシートで集計したデータをSlackに送るといったことも出来るよ！
:::

Pythonと様々なサービスのAPI連携については以下の記事で解説しているのでチェックしてみて下さい。

<https://toukei-lab.com/api>

## 【事前作業】Google Cloudのサービスアカウント作成

スプレッドシートを操作する前に事前作業について見ていきましょう。

Pythonでスプレッドシートを操作するためには、<mark>スプレッドシートにアクセスする権限が必要になります。</mark>

今回はGoogle Cloudの”**[サービスアカウント](https://cloud.google.com/iam/docs/service-account-overview?hl=ja)**“を使って認証を行います。

サービスアカウントはユーザーではなくアプリケーションや外部ツールがリソースにアクセスするために利用されるアカウントです。

権限を付与したサービスアカウントにアプリケーションを紐づけることで<mark>アプリケーションは与えられた操作が可能になります。</mark>

サービスアカウントについて詳しく知りたい方は、[Google Cloudのドキュメント](https://cloud.google.com/iam/docs/service-account-overview?hl=ja)を参考にしてみて下さい。

サービスアカウントの作成手順は以下になります。

:::box
1. **Google Cloudにログイン**
2. **サービスアカウント作成**
3. **サービスアカウントキー作成**
4. **Google APIを有効にする**
5. **サービスアカウントにスプレッドシートの権限を付与**
:::

それぞれ見ていきます。

（※Google Cloudなどの画面が2024年7月時点のものなので、実際の画面と異なる場合があります。）

### ①Google Cloudにログイン

まずはGoogle Cloudのサービスアカウントを作成するためにはGoogle Cloudのアカウントが必要になります。

Google Cloudのアカウント登録方法は以下の記事で解説しているので、<mark>まだアカウントを持っていない方は参考にしてみて下さい。</mark>

<https://toukei-lab.com/cloud-functions-python>

アカウントを取得したら”**[Google Cloud](https://cloud.google.com/?hl=ja)**“にログインします。

### ②サービスアカウント作成

Pythonからスプレッドシートへの認証をするためのサービスアカウントを作成します。

検索バーで「サービスアカウント」と入力して検索ボタンを押します。

検索結果に「サービスアカウント IAMと管理」と出てくるのでクリックします。

サービスアカウントの管理画面に遷移するので画面上部の「＋サービス アカウントを作成」ボタンをクリックします。

![spreadsheet](/wp-content/uploads/2024/07/spreadsheet2-min.jpg)

サービス アカウント名に任意の文字を入れたら「作成して続行」ボタンをクリックし「完了」ボタンを押すとサービスアカウントが作成されます。

![spreadsheet](/wp-content/uploads/2024/07/spreadsheet3-min.jpg)

またこの時、作成したサービスアカウントにプロジェクトの「**編集者**」権限を設定しておきましょう。

### ③サービスアカウントキー作成

作成したサービスアカウントをクリックします。

![spreadsheet](/wp-content/uploads/2024/07/spreadsheet4-min-1024x469.jpg)

「キー」タブを選択し、「新しい鍵を作成」をクリックします。

![spreadsheet](/wp-content/uploads/2024/07/spreadsheet5-min.jpg)

キーのタイプを選択できるの「JSON」を選択して、作成ボタンを押すと秘密鍵がダウンロードできます。

※<mark>秘密鍵を使うと作成したサービスアカウントを利用した操作が可能になります。無くしたり漏洩したりしないように注意しましょう。</mark>

### ④Google APIを有効にする

続いて、サービスアカウントによるGoogleサービスへのアクセスを有効にするための設定を行います。

Google Cloudで「APIとサービス」にアクセスし、画面上部の「＋ APIとサービスを有効にする」をクリックします。

![spreadsheet](/wp-content/uploads/2024/07/spreadsheet6-min.jpg)

検索バーで「Google Drive API」と検索し、「有効にする」をクリックします。

同様に「Google Sheets API」と検索し、「有効にする」をクリックします。

![spreadsheet](/wp-content/uploads/2024/07/spreadsheet7-min.jpg)

### ⑤サービスアカウントにスプレッドシートの権限を付与

最後にサービスアカウントにスプレッドシートの操作権限を付与します。

対象のスプレッドシートの「︙」をクリックし、「共有」を選択します。

ユーザー追加の部分に作成したサービスアカウントのメールアドレスを入力して、権限を設定して「共有」ボタンをクリックします。

![spreadsheet](/wp-content/uploads/2024/07/spreadsheet8-min.jpg)

<mark>スプレッドシートの中身を操作する場合、「編集者」権限が必要になります。</mark>

ドライブ上でファイルの作成をしたい場合はドライブ上のフォルダにも同様にサービスアカウントに権限の付与が必要です。

:::talk{who="umatan"}
これで事前準備が完了！

認証にはWorkload Identityを使った方法もあって、より権限管理を厳密にしたい場合は使ってみよう！
:::

## 【実践】Pythonでスプレッドシートを操作する

では実際にPythonを使ったスプレッドシートの操作方法について見ていきましょう。

今回は以下の操作を見ていきます。

:::box
**・データの読み込み**\
**・データのフィルタリングと書き込み**\
**・データの集計と可視化**
:::

今回はスプレッドシートを操作するということで、Pythonの実行環境に”**[Google Colaboratory](/google-colaboratory)**“を利用します。

“**[Google Colaboratory](/google-colaboratory)**“については、以下の記事で解説しています。

<https://toukei-lab.com/google-colaboratory>

Google Colaboratoryを開いたらセッションストレージに「**[③サービスアカウントキー作成](/python_spreadsheet#i-4)**」でダウンロードした秘密鍵（JSONファイル）をアップロードします。

![spreadsheet](/wp-content/uploads/2024/07/spreadsheet9-min.jpg)

ここではセッションストレージに格納するので、セッションが切れるたびにファイルは削除されます。

そのため、<mark>セッションが切れたら再度秘密鍵をアップロードするようにしましょう。</mark>

### データの読み込み

Pythonで「**スプレッドシート内のデータを読み込んで**」みます。

まずは、Pythonでスプレッドシートを操作するために、必要なライブラリをインストールします。

```python
!pip install gspread google-auth-oauthlib
```

ここでは”**[gspread](https://docs.gspread.org/en/v6.1.2/)**“と”**[google-auth-oauthlib](https://pypi.org/project/google-auth-oauthlib/)**“をインストールします。

:::box
- **gspread**：Google SpreedSheetを操作するためのPythonライブラリ
- **google-auth-oauthlib**：[google-auth](https://google-auth.readthedocs.io/en/master/)と[oathulib](https://pypi.org/project/oauthlib/)を統合したGoogleのOAuth認証を行うためのPythonライブラリ
:::

実際にスプレッドシートに接続します。

スプレッドシートは以下のようなものを準備します。

![spreadsheet](/wp-content/uploads/2024/07/spreadsheet10-min.jpg)

```python
import gspread
from google.oauth2.service_account import Credentials

# GoogleスプレッドシートAPIに接続
scope = ["https://spreadsheets.google.com/feeds", "https://www.googleapis.com/auth/drive"]
creds = Credentials.from_service_account_file("credentials.json", scopes=scope)
client = gspread.authorize(creds)
```

“**Credentials.from_service_account_file**“メソッドでは、サービスアカウントの秘密鍵から認証情報を取得しています。

“**gspread.authorize**“メソッドで取得した認証情報を使って<mark>Google Sheets APIに接続するためのクライアントを作成します。</mark>

<mark>このクライアントを使ってPythonではスプレッドシートの操作を行います。</mark>

```python
# スプレッドシートを開く
sheet = client.open("sample").sheet1

# データを読み込む
data = sheet.get_all_records()

# データを表示
for record in data:
    print(record)
```

作成したクライアントを使ってスプレッドシートを開きます。

認証情報が適切に設定されていれば、シート内のデータを読み込み、表示されます。

![spreadsheet](/wp-content/uploads/2024/07/spreadsheet11-min.jpg)

またスプレッドシート名ではなくスプレッドシートのIDで接続することも可能です。

```python
# スプレッドシートIDを使用して特定のスプレッドシートに接続
spreadsheet_id = 'your_spreadsheet_id_here'
spreadsheet = client.open_by_key(spreadsheet_id)
```

同名のスプレッドシートがある場合は<mark>スプレッドシートIDを使用した方が確実に接続できます。</mark>

:::talk{who="umatan"}
Pythonでスプレッドシートの読み込みが出来たね！

認証が上手くいかない場合はGoogle CloudのプロジェクトがサービスアカウントやAPIで一致しているか確認しよう！
:::

### データのフィルタリングと書き込み

次に「**スプレッドシートのデータを操作**」について見ていきます。

まずフィルタリングして、必要な情報だけを抜き出す操作をしてみます。

```python
# 特定の条件でデータをフィルタリング
filtered_data = [record for record in data if record['年齢'] > 40]

# フィルタリングされたデータを表示
for record in filtered_data:
    print(record)
```

Pythonの文法を使って、”年齢”が40以上のデータを抽出します。

結果を見ると狙い通りにデータをフィルタリングできていることが確認できました。

![spreadsheet](/wp-content/uploads/2024/07/spreadsheet12-min.jpg)

続いて、データの追加や更新を行います。

```python
# 特定のセルを更新
sheet.update_acell("B3", "鈴木")

#行にデータを追加
row_data = [
    ["T00006", "荒川", "記者", 31],
    ["T00007", "渡辺", "作家", 45],
    ["T00008", "藤田", "保育士", 29]
]
sheet.append_rows(row_data)
```

セルの更新はgspreadライブラリの”**sheet.update_acell**“メソッドを利用します。

対象のセルのアドレスと書き込みたい値を引数に設定することで、指定したセルの値を更新してくれます。

スプレッドシートに行単位でデータを追加する場合は、gspreadライブラリの”**sheet.append_rows**“メソッドを利用します。

行のデータをリストとして受け取ることで、スプレッドシートのデータの最後の行から追加できます。

出力結果ではデータの更新箇所及び、データの追加した結果が表示されます。

![spreadsheet](/wp-content/uploads/2024/07/spreadsheet14-min.jpg)

実際にスプレッドシートを見ると、<mark>データが意図した結果になっていることが確認できます。</mark>

![spreadsheet](/wp-content/uploads/2024/07/spreadsheet15-min.jpg)

:::talk{who="umatan"}
Pythonの文法も活用することで、効率的にデータの更新が出来るね！
:::

### データの集計と可視化

次にスプレッドシートで「**データの集計と可視化**」を行っていきます。

サンプルデータには以下のようなデータを使います。

![spreadsheet](/wp-content/uploads/2024/07/spreadsheet17-min.jpg)

データを集計・可視化するために、まずはスプレッドシートのデータを取得してデータフレームに変換します。

```python
import pandas as pd
import matplotlib.pyplot as plt

# スプレッドシートを開く
spreadsheet = client.open("sample")

# 特定のシートにアクセス
sheet = spreadsheet.worksheet("sheet2") 

# スプレッドシートのデータを取得してpandasのDataFrameに変換
data = sheet.get_all_records()
df = pd.DataFrame(data)

# データの表示
print(df)
```

“**sheet.get_all_records**“メソッドではスプレッドシート内からすべてのデータを取得し、Pythonのリスト形式で返してくれます。

```python
# 果物ごとの平均売上を計算
fruit_avg_sales = df.groupby("名前")["合計"].mean()
print("\n果物ごとの平均売上:")
print(fruit_avg_sales)

# 日別の売上金額の合計
daily_sales = df.groupby("日付")["合計"].sum()
print("\n日別の売上金額の合計:")
print(daily_sales)
```

“**[pandas](/python-pandas)**“を使ってデータを集計していきます。

<mark>合計や平均といった統計情報はPythonのライブラリを使って簡単に求めることが出来ます。</mark>

![spreadsheet](/wp-content/uploads/2024/07/spreadsheet18-min.jpg)

Pandasについては以下の記事で詳しく解説しているので、参考にしてみて下さい。

<https://toukei-lab.com/python-pandas>

続いて、データの可視化についても見ていきます。

```python
# 日付ごとに果物の売上をプロット
daily_sales = df.groupby(["日付","名前"])["合計"].sum().unstack()
daily_sales.plot(kind='bar',stacked=True, figsize=(12, 8))
plt.title('Daily Sales')
plt.xlabel('Date')
plt.ylabel('Total Sales')
plt.grid(True)
plt.show()
```

可視化は”[Matplotlib](/matplotlib)“を使って行います。

![spreadsheet](/wp-content/uploads/2024/07/spreadsheet19-min.jpg)

Matplotlibについては以下の記事で詳しく解説しているので、チェックしてみて下さい。

<https://toukei-lab.com/matplotlib>

スプレッドシートに直接グラフを作ることはgspreadライブラリでは現在サポートされていないため、<mark>Matplotlibなどの可視化ライブラリを使うと良いです。</mark>

:::talk{who="umatan"}
スプレッドシートのデータの集計や可視化もPythonで簡単に！
:::

## Pythonでスプレッドシートの操作 まとめ

ここまでご覧いただきありがとうございました！

本記事では、**Pythonでのスプレッドシートの操作**について見ていきました。

Pythonでスプレッドシートを利用するためには認証が必要なので事前に準備しておきましょう。

以下にサービスアカウントを使う場合の手順をまとめておきます。

:::box
1. **Google Cloudにログイン**
2. **サービスアカウント作成**
3. **サービスアカウントキー作成**
4. **Google APIを有効にする**
5. **サービスアカウントにスプレッドシートの権限を付与**
:::

サービスアカウントを使って他のGoogleのAPIサービスを利用できるので、スプレッドシートと組み合わせてみましょう！

:::talk{who="umatan"}
Pythonのライブラリを駆使しながらスプレッドシートの作業を楽にしていこう！
:::

同じGoogleのサービスでGoogle Apps Scriptとスプレッドシートの自動化については以下の記事を参考にしてみて下さい。

<https://toukei-lab.com/google_apps_script>

また、より詳しくGoogleスプレッドシートを操作して業務を効率化する方法を学びたい人は以下のUdemyコースをチェックしてみてください！

:::box
[【初心者向け】PythonでGoogleスプレッドシートを操作して煩雑な日々の業務を効率化・自動化する方法を学ぼう！](https://www.udemy.com/course/python-spreadsheet/?referralCode=CA4DA55DA9B31F2AF30C)

[![Udemy_spreadsheet](/wp-content/uploads/2024/09/Udemy_spreadsheet.jpg)](https://www.udemy.com/course/python-spreadsheet/?referralCode=CA4DA55DA9B31F2AF30C)

<table class="table">
<tbody>
<tr>
<th>【時間】</th>
<td><span>3.5時間</span></td>
</tr>
<tr>
<th>【レベル】</th>
<td><span>初級</span></td>
</tr>
</tbody>
</table>

Pythonでスプレッドシートを操作したいならこれ！今なら購入時に「NZWCLGF4BTZENY6E」という講師クーポンコードを入れると90%オフ以上の割引価格になりますのでぜひご受講ください！

::button[このコースを見てみる]{href="https://www.udemy.com/course/python-spreadsheet/?referralCode=CA4DA55DA9B31F2AF30C" note="＼30日以内なら返金無料／"}
:::

また、スプレッドシートで収集したデータをデータ分析したいと思った方は、当メディアが運営する教育サービス[「スタアカ（スタビジアカデミー）」](https://toukei-lab.com/achademy/)の講座をチェックしてみてください。

:::box
**[スタアカ「04.データ加工集計可視化」](https://toukei-lab.com/achademy/courses/data-preprocess/)**
:::

:::box
**AIデータサイエンス特化スクール「スタアカ」**

![スタアカ（スタビジアカデミー）のトップページ](/wp-content/uploads/2026/10/achademy-top.jpg)
:::

<table class="table">
<tbody>
<tr>
<th>【価格】</th>
<td>ライトプラン：1,280円/月（全コースが受講し放題）<br>
プレミアムプラン：129,800円（通常149,800円・買い切り）</td>
</tr>
<tr>
<th>【オススメ度】</th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
</tr>
<tr>
<th>【サポート体制】</th>
<td><span class="stars" role="img" aria-label="5点中4点" data-value="4"></span></td>
</tr>
<tr>
<th>【受講形式】</th>
<td>オンライン形式</td>
</tr>
<tr>
<th>【学習範囲】</th>
<td>統計学・機械学習・ディープラーニングを網羅的に学ぶ<br>
生成AI（LLM・RAG・プロンプトエンジニアリング）を学ぶ<br>
SQLとPythonを組み合わせて実データを使った様々なワークを行う<br>
実践的なビジネスフレームワークを学ぶ<br>
マーケティングの実行プラン策定</td>
</tr>
</tbody>
</table>

データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「[スタアカ](https://toukei-lab.com/achademy/)」！！

月額1,280円のライトプランで、統計学から機械学習・生成AIまで全コースが受講し放題です！

<mark>プレミアムプランでは、24時間以内の質問対応と現役データサイエンティストとの1on1（30分×4回）を実施します！</mark>

カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください！

他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。

<mark>そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解なども合わせて学べるボリューム満点のコース</mark>になっています！

Pythonが初めての人でも学べるようなカリキュラムにしておりますので是非チェックしてみてください！

ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったりする盛りだくさんの内容になってます！

:::box
**・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析**\
**・世界最大手小売企業のウォルマートの実データを用いた需要予測**\
**・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定**\
**・生成AIのAPIを使ってチャットボットやAIエージェントを作る**
:::

::button[スタアカの受講はこちら]{href="https://toukei-lab.com/achademy/" note="＼今すぐ試す／"}

Pythonではゲーム開発をすることも出来ます。興味がある方は以下の記事をチェックしてみて下さい。

<https://toukei-lab.com/python_game>