CreateLife ~AlwaysLatest~

【2024年版】Pythonでスプレッドシートを操作する

CODE Python

スプレッドシートはとても汎用性が高く、誰でも使えて便利。誰でも使えるからこそ「その処理自動化したほうが楽だよな、、」というケースは多いと思います。
そんな痒いところに手を届かす方法をまとめておきます。

この記事のゴール

  • python経由でスプレッドシートの作成・編集ができる

目次

  1. GoogleCloudでプロジェクト作成
    • GoogleCloudにログイン
    • 新規プロジェクト作成
    • 必要なAPIの有効化
    • 認証情報の作成
  2. gspreadのインストール
  3. スプレッドシートの作成
  4. スプレッドシートの編集
  5. まとめ
  6. 参考にした記事

1. GoogleCloudでプロジェクト作成

そもそもGoogleCloudにおけるプロジェクトとは

Google CloudはGoogleが提供するクラウドサービス
Google Cloudにおけるプロジェクトとは最小単位のリソースとなる。
プロジェクトをまとめるフォルダーがあり、フォルダーをまとめる組織がある。
(フォルダーも組織も作成は任意)
今回はこのプロジェクトを作成してスプレッドシートを操作する。

手順

step1 : Google Cloudへログイン

step2 : 新規プロジェクト作成

step3 : 必要なAPIを有効化

Google Sheets Apiを有効化
Google Drive Apiを有効化

step4 : 認証情報を作成

↓ 作成したクライアントからjsonを取得

client_secret_***.apps.googleusercontent.com.jsonという名前のファイルがダウンロードされます。
ファイル名は簡単にclient_secret.jsonに変えて、pythonの実行ファイルと同じ階層のフォルダに入れておきます。

2. gspreadのインストール

プロジェクトを作成して仮想環境内でインストールしましょう。
詳細はこちら

pip install gspread

3. スプレッドシートの作成

create-sheet.py(なんでも良い)というファイルに下記のようにコードを書きます。

import gspread
import os

dir_path = os.path.dirname(__file__) # 作業フォルダの取得
gc = gspread.oauth(
                   credentials_filename=os.path.join(dir_path, "client_secret.json"), # 認証用のJSONファイル
                   authorized_user_filename=os.path.join(dir_path, "authorized_user.json"), # 証明書の出力ファイル
                   )

wb = gc.create("test01") # スプレッドシート作成

プログラム実行

python create-sheet.py

確認画面が出てきます

自分のgoogleドライブを確認するとtest01というファイルができている!

4. スプレッドシートの編集

先ほどのコードを利用して新たにtest02を作成してデータを入力してみます。コードは下記。

import gspread
import os

dir_path = os.path.dirname(__file__) # 作業フォルダの取得
gc = gspread.oauth(
                   credentials_filename=os.path.join(dir_path, "client_secret.json"), # 認証用のJSONファイル
                   authorized_user_filename=os.path.join(dir_path, "authorized_user.json"), # 証明書の出力ファイル
                   )

wb = gc.create("test02") # スプレッドシート作成

print(wb.id) # キーを後々の参照用に出力しておく

# スプレッドシートに書き込み
wb = gc.open_by_key(wb.id) # test02のファイルを開く(キーから)
ws = wb.get_worksheet(0) # 最初のシートを開く(idは0始まりの整数)

data = [
        ['num1', 'num2', 'date', 'comment'],
        [1, 2, '2023/01/01', '寒い'],
        [3, 20, '2023/02/01', 'ふつう'],
        [31, 14, '2023/03/21', '暑い'],
        [16, 32, '2023/04/22', 'だるい'],
        [13, 100, '2023/05/03', '微熱がある'],
    ]

# 複数行一括書き込み
ws.append_rows(data)

# 単行書き込み
ws.append_row([0, -11, '2023/05/04', '単行書き込み'])

今度は確認画面もなくtest02が作成されて、データの入力もできました!

まとめ

ここまで来ればあとは自分好みのプログラムを作成して日頃の業務をバンバン効率化しましょう!

参考にした記事