//
2026.09.28/3 min read#language#direction

Pythonを業務効率化に使う——GAS・スプレッドシート・SQLとの役割分担

業務の自動化は、全部をPythonで書かなくても進められます。私がスプレッドシート・GAS・SQL・Pythonをどう使い分けているか、道具を選ぶ基準と、置き換えるタイミングの見極め方を書きます。

業務効率化で最初に決めるのは言語ではなく、「データがどこにあって、誰が触るか」 です。私は、人が見て直すものはスプレッドシート、Googleのサービスどうしをつなぐ定期処理はGAS、件数が増えて集計が重くなったらSQL、手元で大量のファイルや複雑な変換を扱うときはPython、という分け方をしています。1つの道具で全部やろうとしないほうが、結果的に長く動きます。

4つの道具を「置き場所」で分ける

私が頭の中で使っている整理はこの表です。

道具 向いている仕事 主に触る人
スプレッドシート 入力・確認・目視での修正、小さな集計 現場の担当者
GAS(Google Apps Script) フォーム回答の転記、定時のメール送信、Googleサービス間の連携 作った人+少し読める担当者
SQL 件数の多いデータの抽出・集計・結合 データを持つ側
Python ファイルの一括変換、外部APIからの取得、込み入った整形 作った人

ポイントは「主に触る人」の列です。クライアントの担当者が毎日開くのはスプレッドシートなので、そこを入口と出口にしておくと、自動化の中身が変わっても使う側の手順は変わりません。Pythonのスクリプトがどれだけ便利でも、担当者のパソコンで動かせなければ、私が不在の日に止まります。

GASで足りる範囲と、その上限

Googleの中で完結する定期処理なら、私はまずGASを選びます。サーバーを用意しなくてよく、トリガーで時刻実行もできるからです。

ただし上限があります。公式の割り当てのページでは、1回の実行時間は6分まで、トリガーによる実行の合計は無料の個人アカウントで1日90分、Google Workspaceのアカウントで1日6時間とされています(値は改定されうるので、使う前に確認しています)。

実務でこの上限に当たるのは、たいてい次の場面です。

  • 1行ずつセルを読み書きしていて、行数が増えたら6分を超えた
  • 外部APIを何百回も呼ぶ処理を毎時動かしている

前者は、範囲をまとめて読み、配列で処理して、まとめて書き戻すだけでかなり縮みます。それでも収まらないなら、道具を替える合図だと考えています。

スプレッドシートを「データベース」にしない

スプレッドシートにも上限があります。Googleのヘルプでは、Googleスプレッドシートは最大2,000万セルまでとされていて、上限の前に動作が重くなるのが実感です。私の経験では、上限よりも「どの行が正しいのか分からなくなる」問題が先に来ます。複数人が同じシートに追記し、関数とコピペが混ざると、集計結果を誰も説明できなくなるのです。

そうなったら、データの置き場所をSQLで扱えるデータベースに移し、スプレッドシートは「抽出した結果を見る場所」に戻します。いきなりサーバーを立てなくても、Pythonには標準ライブラリに sqlite3 があり、別のサーバープロセスなしでファイル1つのデータベースを使えます。私は、CSVをSQLiteに取り込んでSQLで集計を確かめ、結果だけをシートに書き出す、という段階を挟むことが多いです。

Pythonに任せる仕事の見極め

Pythonを出すのは、次のどれかに当てはまるときです。

  • 扱うのがGoogleの外にあるファイル(CSV、Excel、画像、PDFなど)で、数が多い
  • 変換の手順が長く、途中経過を確かめながら直したい
  • GASの実行時間の上限に収まらない

反対に、「毎朝シートの内容をメールで送る」程度ならGASのほうが運用が軽いと感じています。Pythonで書くと、どこで動かすか、誰が止まったことに気づくかを別に決める必要があるからです。ディレクションの目線では、この「動かす場所と見張る人」を決めるまでが自動化の設計だと思っています。

明日から試せる一手

いま手作業でやっている定型業務を1つ選び、「データはどこにあるか」「誰が触るか」「毎回何件か」の3つを紙に書き出してください。件数が少なくGoogleの中で完結するならGAS、件数が多く集計が中心ならSQL、ファイルの変換が中心ならPython。この3行を書くだけで、道具選びで迷う時間はかなり減るはずです。