こんにちは!スタビジ編集部です!
この記事ではPythonを使ってスプレッドシートを操作する方法について解説します!
仕事でもプライベートでもよく利用される”スプレッドシート(Google spreadsheets)“!
ただ、以下のように感じる方も多いのではないでしょうか。
こんな悩みはPythonと組み合わせることで解決できることが多いです!
Pythonでの自動化については以下の記事で詳しく解説しているので参考にしてみて下さい。
より詳しくGoogleスプレッドシートを操作して業務を効率化する方法を学びたい人は以下のUdemyコースをチェックしてみてください!
【初心者向け】PythonでGoogleスプレッドシートを操作して煩雑な日々の業務を効率化・自動化する方法を学ぼう!
【時間】 | 3.5時間 |
---|---|
【レベル】 | 初級 |
Pythonでスプレッドシートを操作したいならこれ!今なら購入時に「66FLEHE87LQ6」という講師クーポンコードを入れると94%OFFになりますのでぜひご受講ください!
また、Pythonについて基礎から体系的に学びたい人は当メディアが運営する「スタアカ」の以下のコースをチェックしてみて下さい。
目次
Pythonでスプレッドシートを操作するメリット
まずはPythonでスプレッドシートを操作するメリットについて見ていきましょう。
Pythonでスプレッドシートを操作するメリットは以下です。
・作業の自動化
・Pythonライブラリによるデータ解析
・他のクラウドサービスとの連携
それぞれ見ていきましょう。
作業の自動化
Pythonで処理を記述することで手動で行っている作業を自動化することが出来ます。
スプレッドシートで行っているデータの集計やグラフの作成といった作業をPythonで自動化することで作業時間を削減や作業ミス軽減につなげることが出来ます。
PythonではX(旧Twitter)の自動化もすることが出来ます。以下の記事で解説しているので参考にしてみて下さい。
Pythonライブラリによるデータ解析
Pythonでは”pandas“や”Numpy“など、データ処理や分析のためのライブラリが多くあります。
そのため、Pythonで操作することでスプレッドシートで集めたデータをそのまま処理・分析することが可能になります。
他のクラウドサービスとの連携
Pythonは他の様々なクラウドサービスと接続することが出来ます。
そのため、Pythonを利用することでスプレッドシートのデータを他のクラウドサービスと連携させるといった使い方も可能です。
Pythonと様々なサービスのAPI連携については以下の記事で解説しているのでチェックしてみて下さい。
【事前作業】Google Cloudのサービスアカウント作成
スプレッドシートを操作する前に事前作業について見ていきましょう。
Pythonでスプレッドシートを操作するためには、スプレッドシートにアクセスする権限が必要になります。
今回はGoogle Cloudの”サービスアカウント“を使って認証を行います。
サービスアカウントはユーザーではなくアプリケーションや外部ツールがリソースにアクセスするために利用されるアカウントです。
権限を付与したサービスアカウントにアプリケーションを紐づけることでアプリケーションは与えられた操作が可能になります。
サービスアカウントについて詳しく知りたい方は、Google Cloudのドキュメントを参考にしてみて下さい。
サービスアカウントの作成手順は以下になります。
- Google Cloudにログイン
- サービスアカウント作成
- サービスアカウントキー作成
- Google APIを有効にする
- サービスアカウントにスプレッドシートの権限を付与
それぞれ見ていきます。
(※Google Cloudなどの画面が2024年7月時点のものなので、実際の画面と異なる場合があります。)
①Google Cloudにログイン
まずはGoogle Cloudのサービスアカウントを作成するためにはGoogle Cloudのアカウントが必要になります。
Google Cloudのアカウント登録方法は以下の記事で解説しているので、まだアカウントを持っていない方は参考にしてみて下さい。
アカウントを取得したら”Google Cloud“にログインします。
②サービスアカウント作成
Pythonからスプレッドシートへの認証をするためのサービスアカウントを作成します。
検索バーで「サービスアカウント」と入力して検索ボタンを押します。
検索結果に「サービスアカウント IAMと管理」と出てくるのでクリックします。
サービスアカウントの管理画面に遷移するので画面上部の「+サービス アカウントを作成」ボタンをクリックします。
サービス アカウント名に任意の文字を入れたら「作成して続行」ボタンをクリックし「完了」ボタンを押すとサービスアカウントが作成されます。
またこの時、作成したサービスアカウントにプロジェクトの「編集者」権限を設定しておきましょう。
③サービスアカウントキー作成
作成したサービスアカウントをクリックします。
「キー」タブを選択し、「新しい鍵を作成」をクリックします。
キーのタイプを選択できるの「JSON」を選択して、作成ボタンを押すと秘密鍵がダウンロードできます。
※秘密鍵を使うと作成したサービスアカウントを利用した操作が可能になります。無くしたり漏洩したりしないように注意しましょう。
④Google APIを有効にする
続いて、サービスアカウントによるGoogleサービスへのアクセスを有効にするための設定を行います。
Google Cloudで「APIとサービス」にアクセスし、画面上部の「+ APIとサービスを有効にする」をクリックします。
検索バーで「Google Drive API」と検索し、「有効にする」をクリックします。
同様に「Google Sheets API」と検索し、「有効にする」をクリックします。
⑤サービスアカウントにスプレッドシートの権限を付与
最後にサービスアカウントにスプレッドシートの操作権限を付与します。
対象のスプレッドシートの「︙」をクリックし、「共有」を選択します。
ユーザー追加の部分に作成したサービスアカウントのメールアドレスを入力して、権限を設定して「共有」ボタンをクリックします。
スプレッドシートの中身を操作する場合、「編集者」権限が必要になります。
ドライブ上でファイルの作成をしたい場合はドライブ上のフォルダにも同様にサービスアカウントに権限の付与が必要です。
認証にはWorkload Identityを使った方法もあって、より権限管理を厳密にしたい場合は使ってみよう!
【実践】Pythonでスプレッドシートを操作する
では実際にPythonを使ったスプレッドシートの操作方法について見ていきましょう。
今回は以下の操作を見ていきます。
・データの読み込み
・データのフィルタリングと書き込み
・データの集計と可視化
今回はスプレッドシートを操作するということで、Pythonの実行環境に”Google Colaboratory“を利用します。
“Google Colaboratory“については、以下の記事で解説しています。
Google Colaboratoryを開いたらセッションストレージに「③サービスアカウントキー作成」でダウンロードした秘密鍵(JSONファイル)をアップロードします。
ここではセッションストレージに格納するので、セッションが切れるたびにファイルは削除されます。
そのため、セッションが切れたら再度秘密鍵をアップロードするようにしましょう。
データの読み込み
Pythonで「スプレッドシート内のデータを読み込んで」みます。
まずは、Pythonでスプレッドシートを操作するために、必要なライブラリをインストールします。
!pip install gspread google-auth-oauthlib
ここでは”gspread“と”google-auth-oauthlib“をインストールします。
- gspread:Google SpreedSheetを操作するためのPythonライブラリ
- google-auth-oauthlib:google-authとoathulibを統合したGoogleのOAuth認証を行うための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“メソッドで取得した認証情報を使ってGoogle Sheets APIに接続するためのクライアントを作成します。
このクライアントを使ってPythonではスプレッドシートの操作を行います。
# スプレッドシートを開く
sheet = client.open("sample").sheet1
# データを読み込む
data = sheet.get_all_records()
# データを表示
for record in data:
print(record)
作成したクライアントを使ってスプレッドシートを開きます。
認証情報が適切に設定されていれば、シート内のデータを読み込み、表示されます。
またスプレッドシート名ではなくスプレッドシートのIDで接続することも可能です。
# スプレッドシートIDを使用して特定のスプレッドシートに接続
spreadsheet_id = 'your_spreadsheet_id_here'
spreadsheet = client.open_by_key(spreadsheet_id)
同名のスプレッドシートがある場合はスプレッドシートIDを使用した方が確実に接続できます。
認証が上手くいかない場合はGoogle CloudのプロジェクトがサービスアカウントやAPIで一致しているか確認しよう!
データのフィルタリングと書き込み
次に「スプレッドシートのデータを操作」について見ていきます。
まずフィルタリングして、必要な情報だけを抜き出す操作をしてみます。
# 特定の条件でデータをフィルタリング
filtered_data = [record for record in data if record['年齢'] > 40]
# フィルタリングされたデータを表示
for record in filtered_data:
print(record)
Pythonの文法を使って、”年齢”が40以上のデータを抽出します。
結果を見ると狙い通りにデータをフィルタリングできていることが確認できました。
続いて、データの追加や更新を行います。
# 特定のセルを更新
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“メソッドを利用します。
行のデータをリストとして受け取ることで、スプレッドシートのデータの最後の行から追加できます。
出力結果ではデータの更新箇所及び、データの追加した結果が表示されます。
実際にスプレッドシートを見ると、データが意図した結果になっていることが確認できます。
データの集計と可視化
次にスプレッドシートで「データの集計と可視化」を行っていきます。
サンプルデータには以下のようなデータを使います。
データを集計・可視化するために、まずはスプレッドシートのデータを取得してデータフレームに変換します。
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のライブラリを使って簡単に求めることが出来ます。
Pandasについては以下の記事で詳しく解説しているので、参考にしてみて下さい。
続いて、データの可視化についても見ていきます。
# 日付ごとに果物の売上をプロット
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については以下の記事で詳しく解説しているので、チェックしてみて下さい。
スプレッドシートに直接グラフを作ることはgspreadライブラリでは現在サポートされていないため、Matplotlibなどの可視化ライブラリを使うと良いです。
Pythonでスプレッドシートの操作 まとめ
Pythonでのスプレッドシートの操作について見ていきました。
Pythonでスプレッドシートを利用するためには認証が必要なので事前に準備しておきましょう。
以下にサービスアカウントを使う場合の手順をまとめておきます。
- Google Cloudにログイン
- サービスアカウント作成
- サービスアカウントキー作成
- Google APIを有効にする
- サービスアカウントにスプレッドシートの権限を付与
サービスアカウントを使って他のGoogleのAPIサービスを利用できるので、スプレッドシートと組み合わせてみましょう!
同じGoogleのサービスでGoogle Apps Scriptとスプレッドシートの自動化については以下の記事を参考にしてみて下さい。
また、より詳しくGoogleスプレッドシートを操作して業務を効率化する方法を学びたい人は以下のUdemyコースをチェックしてみてください!
【初心者向け】PythonでGoogleスプレッドシートを操作して煩雑な日々の業務を効率化・自動化する方法を学ぼう!
【時間】 | 3.5時間 |
---|---|
【レベル】 | 初級 |
Pythonでスプレッドシートを操作したいならこれ!今なら購入時に「66FLEHE87LQ6」という講師クーポンコードを入れると94%OFFになりますのでぜひご受講ください!
また、スプレッドシートで収集したデータをデータ分析したいと思った方は、当メディアが運営する教育サービス「スタアカ(スタビジアカデミー)」の講座をチェックしてみてください。
AIデータサイエンス特化スクール「スタアカ」
【価格】 | ライトプラン:1280円/月 プレミアムプラン:149,800円 |
---|---|
【オススメ度】 | |
【サポート体制】 | |
【受講形式】 | オンライン形式 |
【学習範囲】 | データサイエンスを網羅的に学ぶ 実践的なビジネスフレームワークを学ぶ SQLとPythonを組み合わせて実データを使った様々なワークを行う マーケティングの実行プラン策定 マーケティングとデータ分析の掛け合わせで集客マネタイズ |
データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「スタアカ」!!
24時間以内の質問対応と現役データサイエンティストによる複数回のメンタリングを実施します!
カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください!
他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。
そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解なども合わせて学べるボリューム満点のコースになっています!
Pythonが初めての人でも学べるようなカリキュラムしておりますので是非チェックしてみてください!
ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったり・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践してもらったりする盛りだくさんの内容になってます!
・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析
・世界最大手小売企業のウォルマートの実データを用いた需要予測
・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定
・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践して稼ぐ
Pythonではゲーム開発をすることも出来ます。興味がある方は以下の記事をチェックしてみて下さい。