【Python】Google スプレッドシートの読み書き

Uncategorized
846 words

Python から Google スプレッドシート を読み書きする方法です。

Python でゴリゴリ整形したデータを Google スプレッドシート に蓄えたかったので備忘録します。

環境

  • Windows 11 Home 21H2 (22000.434)
  • Python 3.10.1
  • gspread 5.1.1

GCP (Google Cloud Platform)

Python から Google スプレッドシート を操作するには GCP (Google Cloud Platform) で APIキー を発行する必要があります。

プロジェクトの作成

まず GCP (Google Cloud Platform) へ行き、プロジェクトを作成します。

プロジェクトを作成

分かりやすい適当なプロジェクト名を入力します。

プロジェクト名を入力

少し待つと GCP にプロジェクトが出来上がります。

プロジェクト

Google Drive API を有効化

Python から Google スプレッドシート を操作したいので、Google Drive API を有効化します。

まず、「API とサービス」の「ライブラリ」へ行き、

API とサービス ライブラリ

「google drive api」を検索して、

Google Drive API

Google Drive API ライブラリ を有効化します。

Google Drive API を有効化

Google Sheets API を有効化

同じ要領で「Google Sheets API」も有効化します。

Google Sheets API

Google Sheets API を有効化

認証情報の作成

続いて、Python から Google スプレッドシート を操作するために、認証情報を作成します。

認証情報の作成

「認証情報を作成」ボタンを押し、

認証情報を作成

「サービスアカウント」を選択します。

サービスアカウント

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

「サービスアカウント名」と「サービスアカウントID」を入力し「完了」ボタンを押すとサービスアカウントが作られます。

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

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

今作ったサービスアカウントを開いて、

サービスアカウント

「キー」タブを選択し、

キータブを選択

「新しい鍵を作成」を選択します。

新しい鍵を作成

キーのタイプ「JSON」を選択し「作成」を押すと サービスアカウントのキーが作成されます。

JSON

保存ダイアログが出るので、キーファイルを適当な場所に保存します。

Google スプレッドシート

Python から読み書きできる Google スプレッドシート を作っていきます。

共有の設定

対象の Google スプレッドシート を開いて「ファイル > 共有 > 他のユーザーと共有」を選択します。

他のユーザーと共有

「ユーザーを追加」する箇所に、先ほど保存したキーファイルの「client_email」を貼り付けます。

ユーザーを追加

この部分をコピペすればOKです。

client_email

最後に「送信」ボタンを押せば共有設定は完了です。

共有設定は完了

Google スプレッドシートの読み書き

準備が終わったので早速 Python から Google スプレッドシートの読み書き をしてみたいと思います。

ライブラリのインストール

今回は「gspread」ライブラリを使って読み書きをしていきます。

1
pip install gspread

書き込み

同じディレクトリのサービスアカウントキーファイルを読み込み、Google スプレッドシートに値を書き込みに行きます。

1
2
3
4
5
6
7
8
9
10
import gspread

# サービスアカウントキーファイルの読み込み
gspread_client = gspread.service_account(filename="./durable-retina-339104-a1ecc76aaf24.json")

# Google スプレッドシートを開く
spread_sheet = gspread_client.open("Google スプレッドシートの読み書き")

# A1セルを更新
spread_sheet.sheet1.update_acell('A1', '勝利は奇跡じゃない')

実行すると Google スプレッドシート に値が入ります。

Google スプレッドシート に値が入ります

読み込み

最後に Google スプレッドシート から値を読み込んでみます。

1
2
3
4
5
6
7
8
9
10
11
import gspread

# サービスアカウントキーファイルの読み込み
gspread_client = gspread.service_account(filename="./durable-retina-339104-a1ecc76aaf24.json")

# Google スプレッドシートを開く
spread_sheet = gspread_client.open("Google スプレッドシートの読み書き")

# A1セルを読み込む
cell = spread_sheet.sheet1.acell('A1')
print(cell.value) # 結果: 勝利は奇跡じゃない

指定列を全て取得

1
2
# A列を全て取得
cols = spread_sheet.sheet1.col_values(1)

指定行を全て取得

1
2
# 1行目を全て取得
rows = spread_sheet.sheet1.row_values(1)