Googleスプレッドシートは共同作業に便利なツールですが、Pythonを使えばデータの読み書きを自動化することができます。例えば、日次レポートの更新、ログ記録、外部データの転記などに応用できます。
この記事では、Google公式のAPIとPythonライブラリ「gspread」を使って、スプレッドシートへのアクセス、読み取り、書き込みの基本的な方法を解説します。
事前準備|Google Cloudとサービスアカウントの設定
- Google Cloud Console にログインし、プロジェクトを作成
- 「Google Sheets API」を有効にする
- 「サービスアカウント」を作成し、キー(JSON)をダウンロード
- そのサービスアカウントのメールアドレスを、対象スプレッドシートに「編集者」として共有
Pythonライブラリのインストール
pip install gspread oauth2client
認証処理とスプレッドシートへの接続
import gspread
from oauth2client.service_account import ServiceAccountCredentials
# スコープと認証
scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
creds = ServiceAccountCredentials.from_json_keyfile_name('credentials.json', scope)
client = gspread.authorize(creds)
# スプレッドシートに接続(タイトル名で指定)
sheet = client.open('勤怠レポート').sheet1
スプレッドシートの読み取り
データの読み取り方法は以下のとおりです。
# A1のセルを取得
value = sheet.acell('A1').value
# 2行目全体を取得
row = sheet.row_values(2)
# 「勤怠状況」列(3列目)をすべて取得
column = sheet.col_values(3)
# 全体の2次元配列として取得
all_data = sheet.get_all_values()
スプレッドシートへの書き込み
# A2セルに書き込む
sheet.update_acell('A2', '出勤')
# 3行目にまとめてデータを書き込む
sheet.insert_row(['田中', '2024-07-17', '出勤'], index=3)
# 最終行の下に追記
sheet.append_row(['佐藤', '2024-07-17', '遅刻'])
応用:既存のデータを上書き or 条件付き更新
# 指定した値を検索してセルを取得
cell = sheet.find('佐藤')
# その行の3列目(勤怠ステータス)を「出勤」に変更
sheet.update_cell(cell.row, 3, '出勤')
まとめ
Pythonとgspreadを組み合わせれば、Googleスプレッドシートの読み書きを柔軟に自動化できます。業務日報の自動転記、フォームの回答集計、外部データの取り込みなど、あらゆる業務プロセスに応用可能です。さらに高度な使い方として、pandasとの連携やGoogle Drive APIによるファイル操作も併用できます。