【GAS連携】PythonとGoogle Apps ScriptでGoogleスプレッドシートを自在に操作する方法

はじめに

Googleスプレッドシートは業務のデータ管理に欠かせないツールですが、単純な自動化や外部システムとの連携を行いたいとき、PythonやGoogle Apps Script(GAS)の連携が非常に強力な武器になります。この記事では、「Python × GAS」でスプレッドシートを自在に操作する具体的な方法を、サンプルコード付きで解説します。


本記事の対象読者

  • Pythonでスプレッドシートを読み書きしたい中級者
  • GASを使ったスプレッドシート操作を知りたい方
  • 外部APIやPythonの自動化処理とスプレッドシートを連携させたい方

全体構成(Python × GAS 連携の考え方)

PythonとGASはそれぞれ単体でもGoogleスプレッドシートを操作できますが、以下のような使い分けが可能です。

処理適した技術補足
ローカルのデータを定期的にスプレッドシートに書き出すPython(gspread)cronなどで自動化可能
シート上のイベントトリガーや条件付き処理GASonEdit/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');
}

公開設定

  1. [デプロイ] → [新しいデプロイ] を選択
  2. 「ウェブアプリ」を選択し、アクセス権限を「全員(匿名ユーザー含む)」に設定
  3. デプロイ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環境との親和性」「イベントトリガー」の活用に強み

業務効率を飛躍的に向上させるこのテクニック、ぜひ試してみてください!

タイトルとURLをコピーしました