Python

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

記事内に商品プロモーションを含む場合があります
ウマたん
ウマたん
当サイト【スタビジ】の本記事では、Pythonでスプレッドシートを操作する方法について解説していきます。スプレッドシートの面倒な作業をPythonで自動化していきましょう!

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

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

仕事でもプライベートでもよく利用される”スプレッドシート(Google spreadsheets)“!

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

スプレッドシートにデータを集めたはいいけど、手動で整理するのが面倒、、、
クラウドの利点を生かして、作業を効率化したい!

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

ウマたん
ウマたん
Pythonでスプレッドシートを扱う方法をマスターして、面倒な作業をどんどんラクにしていこう!

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

Python 自動化
Pythonの自動化で出来ることの例と独学実装ロードマップを徹底解説!当サイト【スタビジ】の本記事では、Pythonで出来る自動化について徹底的に見ていきたいと思います!様々な業務を自動化して、ルーティン業務をなくしていくことであなたの仕事や生活は格段に楽になるはずです!Pythonの自動化で出来ること・勉強ロードマップ・そして最終的に簡単な実装を見ていきます。...

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

【初心者向け】PythonでGoogleスプレッドシートを操作して煩雑な日々の業務を効率化・自動化する方法を学ぼう!

Udemy_spreadsheetUdemy_spreadsheet
【時間】3.5時間
【レベル】初級

Pythonでスプレッドシートを操作したいならこれ!!

\30日以内なら返金無料/このコースを見てみる

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

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

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

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

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

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

作業の自動化

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

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

ウマたん
ウマたん
Pythonでスプレッドシートを扱うことで作業を効率化できる!

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

Pythonでは”pandas“や”Numpy“など、データ処理や分析のためのライブラリが多くあります。

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

ウマたん
ウマたん
スプレッドシートで手動で操作するよりも、Pythonのライブラリを活用することでより効果的なデータ解析が出来る!

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

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

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

ウマたん
ウマたん
例えばPythonを使ってスプレッドシートで集計したデータをSlackに送るといったことも出来るよ!

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

PythonのAPIを利用
【5分で分かる】Pythonを使って様々なサービスのAPIを利用してみよう!当サイト【スタビジ】の本記事では、Pythonを使ってSlackやGoogleのAPIを利用していきます!APIを利用することで非常に様々なことができるので是非試してみましょう!APIを使えるようになると幅が広がりますよ!...

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

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

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

今回はGoogle Cloudの”サービスアカウント“を使って認証を行います。

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

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

サービスアカウントについて詳しく知りたい方は、Google Cloudのドキュメントを参考にしてみて下さい。

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

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

それぞれ見ていきます。

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

①Google Cloudにログイン

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

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

Python Cloud Functions
【初心者向け】GoogleのCloud FunctionsにPythonコードをデプロイしAPIを作る方法!当サイト【スタビジ】の本記事では、PythonコードをCoogle CloudのCloud Functionsにデプロイする方法を解説していきます!Cloud Functionsは非常に便利で無料で使える枠が広くぜひ使えるようになっておきたいツールです!...

アカウントを取得したら”Google Cloud“にログインします。

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

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

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

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

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

spreadsheet

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

spreadsheet

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

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

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

spreadsheet

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

spreadsheet

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

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

④Google APIを有効にする

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

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

spreadsheet

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

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

spreadsheet

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

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

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

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

spreadsheet

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

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

ウマたん
ウマたん
これで事前準備が完了!

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

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

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

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

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

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

Google Colaboratory“については、以下の記事で解説しています。

Google Colaboratory
Google Colaboratoryのメリットと使い方!GPU環境でPython回すならこれだ!当サイト【スタビジ】の本記事では、Googleが無償で提供する機械学習のプラットフォーム「Google Colaboratory」をメリット・デメリット・使い方について見ていきます!実際にPythonを実行していきGPUの威力を見ていきます。...

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

spreadsheet

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

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

データの読み込み

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

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

!pip install gspread google-auth-oauthlib

ここでは”gspread“と”google-auth-oauthlib“をインストールします。

  • gspread:Google SpreedSheetを操作するためのPythonライブラリ
  • google-auth-oauthlibgoogle-authoathulibを統合したGoogleのOAuth認証を行うためのPythonライブラリ

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

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

spreadsheet
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“メソッドで取得した認証情報を使ってGoogle Sheets APIに接続するためのクライアントを作成します。

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

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

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

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

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

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

spreadsheet

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

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

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

ウマたん
ウマたん
Pythonでスプレッドシートの読み込みが出来たね!

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

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

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

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

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

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

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

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

spreadsheet

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

# 特定のセルを更新
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

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

spreadsheet
ウマたん
ウマたん
Pythonの文法も活用することで、効率的にデータの更新が出来るね!

データの集計と可視化

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

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

spreadsheet

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

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のリスト形式で返してくれます。

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

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

pandas“を使ってデータを集計していきます。

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

spreadsheet

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

pandas
【入門者向け】PythonのPandasの使い方について簡単にまとめておく!当サイト【スタビジ】の本記事では、Pythonで頻繁に使われるPandasについて簡単にまとめておきたいと思います!データの読み込みや前処理や集計、可視化などによくつかわれるPandasについてしっかりおさえておきましょう!また最後には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“を使って行います。

spreadsheet

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

matplotlib
【5分で分かる】実データで学ぶPythonのMatplotlibの使い方まとめ!当サイト【スタビジ】の本記事では、Pythonでの可視化に非常によく利用されるMatplotlibの使い方について徹底的に見ていきます!よく使われるデータセットを使った可視化とデータコンペのデータを使った実践的な可視化をMatplotlibを使いながらやっていきますよ!データ分析においては愚直にデータを眺める作業が非常に重要なんです!...

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

ウマたん
ウマたん
スプレッドシートのデータの集計や可視化もPythonで簡単に!

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

Pythonでのスプレッドシートの操作について見ていきました。

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

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

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

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

ウマたん
ウマたん
Pythonのライブラリを駆使しながらスプレッドシートの作業を楽にしていこう!

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

gas
【サンプルコード付き】GASを使った自動化を実装してみよう!当サイト【スタビジ】の本記事では、GAS(Google Apps Script)を使った自動化の方法について解説していきます。GASを使うといろんなことが自動化できます!サンプルコードを参考にGASの使い方をマスターしていきましょう!...

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

【初心者向け】PythonでGoogleスプレッドシートを操作して煩雑な日々の業務を効率化・自動化する方法を学ぼう!

Udemy_spreadsheetUdemy_spreadsheet
【時間】3.5時間
【レベル】初級

Pythonでスプレッドシートを操作したいならこれ!!

\30日以内なら返金無料/このコースを見てみる

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

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

スタアカトップ
【価格】ライトプラン:1280円/月
プレミアムプラン:149,800円
【オススメ度】
【サポート体制】
【受講形式】オンライン形式
【学習範囲】データサイエンスを網羅的に学ぶ
実践的なビジネスフレームワークを学ぶ
SQLとPythonを組み合わせて実データを使った様々なワークを行う
マーケティングの実行プラン策定
マーケティングとデータ分析の掛け合わせで集客マネタイズ

データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「スタアカ」!!

24時間以内の質問対応と現役データサイエンティストによる複数回のメンタリングを実施します!

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

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

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

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

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

・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析
・世界最大手小売企業のウォルマートの実データを用いた需要予測
・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定
・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践して稼ぐ

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

python_game
【サンプルコード付き】初心者でもPythonでゲームを簡単に作る方法を学ぼう!当サイト【スタビジ】の本記事では、Pythonでゲームを作る方法について解説していきます。実際にコードを書きながら、Pythonでゲームを作るための基礎を学んでいきましょう!...
スタビジアカデミーでデータサイエンスをさらに深く学ぼう!

スタアカサービスバナースタビジのコンテンツをさらに深堀りしたコンテンツが動画と一緒に学べるスクールです。

プレミアムプランでは私がマンツーマンで伴走させていただきます!ご受講お待ちしております!

スタビジアカデミーはこちら