Googleスプレッドシート

PythonにGoogleスプレッドシートのデータを読み込む方法!サンプルコードつき(Google Colab)

python ロゴ

Pythonとスプレッドシートを使うようにはなったものの、一向に覚える気配がないので備忘録としてPythonにGoogleスプレッドシートのデータを読み込む方法を残します。

スプレッドシートとPythonを連携する準備

Pythonでスプレッドシートを扱うにはGCP (Google Cloud Platform)の設定が必要です。

GCPの準備は以下の記事で解説しています。

スプレッドシートへの共有設定まで終われば準備完了です。秘密キーもドライブに保存しておくとスムーズです。

Colabの準備

上記の記事でも書いてありますが、colab側のスプレッドシートを扱う準備です。

Colab画面では+codeでコードを記載するエリアを追加してコードを記述しています。(まとめて書く方法もあるかもしれませんが、わかりやすいかなと思っています)

colab サンプルコードイメージ

Googleドライブマウント用のコード

秘密キーのjsonデータをドライブに上げるため、マウント用のコード。

from google.colab import drive
drive.mount(‘/content/drive’)

ドライブをマウントしたら(マウントする前でも後でも良し)drive内の好きな場所へGCPで作成した秘密キーのJSONファイルをアップロードしておきます。

インターフェースインストール用

Googleスプレッドシートを操作するためのインターフェースをインストールするためのコード。

!pip install gspread

Google API認証用

Google API認証用のインターフェースをインストールするためのコード。

!pip install oauth2client

PythonにGoogleスプレッドシートのデータを読み込む方法

それではGoogle Colaboratoryを使ってスプレッドシートのデータを読み込む方法を紹介します。簡単なサンプルコードを用意したので、誰でも動かせるかと思います。

スプレッドシート側のデータ

スプレッドシートのセルには以下のデータが入っている想定です。

テストデータ

コピー用

IDitem1item2item3
A
B
C
D123
efgh

サンプルコード

import gspread
from oauth2client.service_account import ServiceAccountCredentials

scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']

#ダウンロードしたjsonファイルをドライブにアップデートした際のパス
json = 'ここに秘密キーのパスを貼り付け'

credentials = ServiceAccountCredentials.from_json_keyfile_name(json, scope)

gc = gspread.authorize(credentials)

#書き込み先のスプレッドシートキーを追加
SPREADSHEET_KEY = 'ここにスプレッドシートのキーを貼り付け'

#共有設定したスプレッドシートの1枚目のシートを開く
worksheet = gc.open_by_key(SPREADSHEET_KEY).sheet1

# 全てのデータを読み込む
all_data = worksheet.get_all_values()

print("全てのデータ")
print(all_data)

# 指定した縦の列の値を全て読み込む
col_data = worksheet.col_values(1) # 1行目を指定

print("縦列のデータ")
print(col_data)

# 指定した横の行の値を全て読み込む
row_data = worksheet.row_values(1) # 1行目を指定

print("行のデータ")
print(row_data)

# 指定したセルの値を読み込む
cell_data1 = worksheet.acell('A4').value # C
cell_data2 = worksheet.cell(6, 3).value # g

print("指定したセルの値")
print(cell_data1)
print(cell_data2)

# 指定した複数のセルの値を読み込む
cells_data = worksheet.get('B5:D6')

print("指定した複数のセルの値")
print(cells_data)

# 辞書型で読み込む
all_dict_data = worksheet.get_all_records()

print("辞書型の値")
print(all_dict_data)

結果

全てのデータ
[[‘ID’, ‘item1’, ‘item2’, ‘item3’], [‘A’, ”, ”, ”], [‘B’, ”, ”, ”], [‘C’, ”, ”, ”], [‘D’, ‘1’, ‘2’, ‘3’], [‘e’, ‘f’, ‘g’, ‘h’]]
縦列のデータ
[‘ID’, ‘A’, ‘B’, ‘C’, ‘D’, ‘e’]
行のデータ
[‘ID’, ‘item1’, ‘item2’, ‘item3’]
指定したセルの値
C
g
指定した複数のセルの値
[[‘1’, ‘2’, ‘3’], [‘f’, ‘g’, ‘h’]]
辞書型の値
[{‘ID’: ‘A’, ‘item1’: ”, ‘item2’: ”, ‘item3’: ”}, {‘ID’: ‘B’, ‘item1’: ”, ‘item2’: ”, ‘item3’: ”}, {‘ID’: ‘C’, ‘item1’: ”, ‘item2’: ”, ‘item3’: ”}, {‘ID’: ‘D’, ‘item1’: 1, ‘item2’: 2, ‘item3’: 3}, {‘ID’: ‘e’, ‘item1’: ‘f’, ‘item2’: ‘g’, ‘item3’: ‘h’}]

サンプルコードの解説

サンプルコードを元に解説していきます。おまじないと化しているコードは省きます。

秘密キー

JSONデータのパスは自分の環境のものに書き変えてください。

jsonファイルのパスはcolab内の左側のファイル一覧でjsonファイルを選択し現れる「・・・」をクリックし「パスをコピー」で取得できます。

colabパスを取得

スプレッドシートのキー

スプレッドシートのキーは、スプレッドシートのURLの以下の「xxx」の部分です。環境に合わせて書き換えてください。

https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxxxxxxx/edit#gid=0

全てのデータを読み込む

get_all_values()では開いているシート内の全てのデータを読み込んでくれます。

all_data = worksheet.get_all_values()

いいところで自動で読み込んでくれるので便利です。

指定した縦の列の値を全て読み込む

col_values()の()内の値で列を指定しています。E列なら5と書くとE列が読まれます。

col_data = worksheet.col_values(1)

指定した横の行の値を全て読み込む

row_values()の()内の値で列を指定しています。5なら5行目が読まれます。

row_data = worksheet.row_values(1)

指定したセルの値を読み込む

acell()ではセルIDを指定します。

cell_data1 = worksheet.acell(‘A4’).value

cell()では(行番号、列番号)を指定します。C列は3になります。

cell_data2 = worksheet.cell(6, 3).value

指定した複数のセルの値を読み込む

get()では開始位置のセルIDと終了位置のセルIDを指定しその範囲のデータを取得できます。

cells_data = worksheet.get(‘B5:D6’)

辞書型で読み込む

get_all_records()では辞書型で読み込んでくれます。1行目をヘッダー(見出し、キー)として読んでくれます。

all_dict_data = worksheet.get_all_records()

おわり

gspreadは本当便利ですね。コピペに活用していただければと思います。

参考元

https://docs.gspread.org/en/latest/user-guide.html

関連記事

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です