はじめに
Googleスプレッドシートは業務のデータ管理に欠かせないツールですが、単純な自動化や外部システムとの連携を行いたいとき、PythonやGoogle Apps Script(GAS)の連携が非常に強力な武器になります。この記事では、「Python × GAS」でスプレッドシートを自在に操作する具体的な方法を、サンプルコード付きで解説します。
本記事の対象読者
- Pythonでスプレッドシートを読み書きしたい中級者
- GASを使ったスプレッドシート操作を知りたい方
- 外部APIやPythonの自動化処理とスプレッドシートを連携させたい方
全体構成(Python × GAS 連携の考え方)
PythonとGASはそれぞれ単体でもGoogleスプレッドシートを操作できますが、以下のような使い分けが可能です。
処理 | 適した技術 | 補足 |
---|---|---|
ローカルのデータを定期的にスプレッドシートに書き出す | Python(gspread) | cronなどで自動化可能 |
シート上のイベントトリガーや条件付き処理 | GAS | onEdit/onChangeなどで対応 |
PythonからGAS関数を呼び出したい | Web AppsとしてGASを公開 | fetchやrequestsでアクセス |
Step1:Google Apps ScriptでWeb APIを作成する
まず、スプレッドシートを操作するGAS関数をWeb APIとして公開します。
GASコード例(スプレッドシートへ書き込み)
function doPost(e) {
const data = JSON.parse(e.postData.contents);
const ss = SpreadsheetApp.openById('スプレッドシートID');
const sheet = ss.getSheetByName('シート名');
sheet.appendRow([data.name, data.email, new Date()]);
return ContentService.createTextOutput('Success');
}
公開設定
- [デプロイ] → [新しいデプロイ] を選択
- 「ウェブアプリ」を選択し、アクセス権限を「全員(匿名ユーザー含む)」に設定
- デプロイURLを控えておく(Python側で使用)
Step2:PythonからGASを呼び出す(POST)
Pythonから上記GASのWeb APIを呼び出してスプレッドシートを操作します。
必要なライブラリ
pip install requests
Pythonコード例
import requests
import json
url = 'https://script.google.com/macros/s/xxxxx/exec' # GASのWeb Apps URL
payload = {
'name': '田中太郎',
'email': 'taro.tanaka@example.com'
}
response = requests.post(url, json=payload)
print(response.text) # "Success"
Step3:双方向連携の実現(GASからPython API呼び出し)
Python側にFlaskなどでAPIを立てておけば、GASからPython処理を呼び出すことも可能です。
Python側(Flask例)
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/receive', methods=['POST'])
def receive_data():
data = request.json
print(data)
return jsonify({'status': 'received'})
if __name__ == '__main__':
app.run(port=5000)
GAS側から呼び出し
function callPythonAPI() {
const payload = {
value: 'GASから送信されたデータ'
};
const options = {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify(payload)
};
UrlFetchApp.fetch('http://your-server-address:5000/receive', options);
}
Step4:gspreadによるPython単体スプレッドシート操作
Pythonだけでスプレッドシートを扱いたい場合、gspread
とGoogle API認証を利用する方法もあります。
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("シート名").worksheet("シート1")
sheet.append_row(["Pythonから書き込み", "2025-07-12"])
おわりに:PythonとGASの併用がもたらす柔軟性
Googleスプレッドシートの操作は、Python単体でも、GAS単体でも可能ですが、それぞれの長所を活かして組み合わせることで、より高度で柔軟な自動化が可能になります。
- Python側は「データ処理」や「外部連携」に強み
- GAS側は「Google環境との親和性」「イベントトリガー」の活用に強み
業務効率を飛躍的に向上させるこのテクニック、ぜひ試してみてください!