GAS(Google Apps Script)で業務を自動化するのは、エンジニアにとって自然な発想だ。
Gmail で請求書メールを検索して、添付 PDF を Google Drive に保存する。差出人と金額をスプレッドシートに転記する。毎月 1 日にトリガーで自動実行する。
無料で、コードが書ければ数時間で組める。最初はうまく動く。問題はその後だ。
限界 1: メンテナンスできるのが自分だけ
GAS のスクリプトを書いたのは、経理チームの中で唯一プログラミングができる人。あるいは、知り合いのエンジニアに頼んで作ってもらった。
どちらにしても、コードの中身を理解している人は 1 人だけだ。
3 ヶ月後、Gmail の仕様が変わってスクリプトがエラーを吐く。GAS の V8 ランタイム移行で書き直しが必要になる。差出人のメールアドレスが変わって取りこぼしが発生する。
エラーが出るたびに、あの 1 人に連絡が行く。その人が忙しければ、月末の請求書処理が止まる。
Excel VBA の属人化と同じだ。言語が VBA から JavaScript に変わっただけで、構造は何も変わっていない。
限界 2: PDF の中身は読めない
GAS でできるのは「メールの検索」と「添付ファイルの取得」まで。
差出人、件名、日付、添付ファイル名は取れる。添付ファイルを Drive に保存することもできる。ここまでは GAS の得意分野だ。
でも、請求書 PDF の中身を読み取ってデータ化することは、GAS 単体ではできない。
「振込先はどこか」「金額はいくらか」「支払期限はいつか」。これらの情報は PDF の中に書いてある。GAS で取得できるのは PDF というファイルオブジェクトであって、その中身のテキストではない。
PDF からテキストを抽出するライブラリを組み合わせることはできるが、請求書のフォーマットは取引先ごとにバラバラだ。「3 行目の右から 15 文字が口座番号」のようなルールが通用しない。
結局、PDF を開いて目で読む工程は残る。
限界 3: 「次のアクション」に繋がらない
スプレッドシートに請求書の一覧ができた。差出人と金額が並んでいる。
で、次に何をするか。
全銀フォーマットのファイルを作りたい。freee に請求書を登録したい。取引先にメールで支払い確認を送りたい。
GAS でこれらを実装することは、理論上は可能だ。でも、全銀フォーマットの 120 バイト固定長レコード生成を GAS で書くのか。freee API の OAuth 認証を GAS で管理するのか。1 つの業務フローのために、複数の API クライアントを GAS の中に全部書くのか。
スクリプトが 1,000 行を超えたあたりで気づく。これはもう「ちょっとした自動化」ではなく、アプリケーション開発だ。テストコードはない。デプロイ手順はない。ドキュメントもない。
GAS の正しい使いどころ
GAS が悪いわけではない。使いどころが違うだけだ。
GAS が向いているのは、完全に定型で、変更頻度が低く、壊れても影響が小さい作業の自動化。例えば、毎朝スプレッドシートのデータを Slack に通知する。フォーム送信をトリガーにしてメールを送る。こういう「壊れたら手動でやればいい」レベルのタスクには GAS が最適だ。
月末の振込処理のように、壊れたら業務が止まる重要なフローを GAS で回すのは危うい。
Saturn でやる場合
Saturn は、GAS がやろうとしていたことを、テーブルの操作だけで実現する。
| GAS で頑張ること | Saturn |
|---|---|
| Gmail 検索スクリプト | Gmail ソースで条件指定 |
| PDF 保存スクリプト | 自動取得 |
| PDF 読み取り | AI エンリッチ列 |
| 全銀フォーマット生成 | アクション列 |
| freee 請求書作成 | アクション列 |
| トークン管理 | Saturn が管理 |
| エラー対応 | UI で即確認 |
コードは書かない。だから属人化しない。GAS のトリガーが壊れて気づかないまま 1 ヶ月放置、ということも起きない。
GAS で自動化を試みたことがある人なら、Saturn の価値は 5 分で理解できる。
Saturn — AI が動く Excel
14 日間無料トライアルあり。GAS から卒業するなら。