The Power of GAS: Free Compute Hiding Inside Your Google Account
Google Apps Script is the least glamorous platform I run code on, and possibly the highest-leverage: my lunch orders, inbox hygiene, and half my finance pipeline run on it — for free, with zero OAuth ceremony.
The Platform Nobody Brags About
Nobody puts Google Apps Script on their resume. It's JavaScript in a beige box: an old editor, quotas everywhere, and a vibe of "macros for spreadsheets."
And yet, when I audit my personal automation by value delivered per hour invested, GAS embarrasses everything else I run. The reason is one unfair advantage: your script runs inside Google's walls. Gmail, Sheets, Calendar, Drive — no OAuth dance, no API keys, no token refresh cron, no server. GmailApp.search(...) just works, as you, forever. Plus a free scheduler (time-driven triggers) and a free HTTPS endpoint (doPost) on every script.
That's a cloud platform. It's just wearing a spreadsheet costume.
My claspprojs/ repo is the fleet. A tour:
Exhibit A: The Lunch Bot
Our office lunch registration lives in a shared Google Sheet — every day, everyone marks whether they're eating. Which means every day, a hundred humans perform the same three clicks, and forgetting means no lunch.
Lunchv2 is a small GAS web app on top of that sheet: you set your weekly preferences once ("eat Mon–Thu, skip Fri"), and a nightly trigger fills the sheet for everyone automatically.
The interesting engineering bit is the central trigger pattern. Preferences live in Script Properties (shared, script-scoped storage) rather than per-user storage — so a single trigger owned by one account can apply everyone's registrations. One cron, all users, no per-user auth headaches. Days now begin with lunch already handled, which is the correct number of decisions to make before coffee.
Exhibit B: The Inbox Janitor
email-auto-deleter trashes promotional debris older than five days, on schedule, and logs what it killed to a sheet. Standard stuff.
The upgrade that earns it a mention: it also exposes a small JSON API (doPost with a token) with fetch and trash actions. Why? So my AI agent can triage the inbox — Claude fetches recent unread mail through that endpoint, proposes what to trash, and my approval executes it. GAS turned Gmail into an agent-accessible tool with ~40 lines of code and no Google Cloud project. (Anonymous web app + bearer token — rotate it if it leaks, it's the whole lock.)
Exhibit C: The Ancestors and the Glue
- money-tracker — the original money stack: read bank emails from Gmail, write rows to a Sheet, notify Telegram. No UI at all. It was eventually reborn with a real database as Tiền and Xu — but the architecture (email → parse → ledger → Telegram) survived the rewrite unchanged. The Sheet was a fine database until it wasn't.
- tien-forwarder — the piece of Tiền that must live in GAS: the Gmail watcher that forwards bank alerts to my Cloudflare Worker. Workers can't read Gmail; GAS natively can. Ten lines of glue in exactly the right place.
The Part That Makes It Sustainable: clasp
The default GAS experience — editing in a browser textarea with no history — is how scripts become haunted houses. The fix is clasp, Google's CLI: clasp pull/clasp push syncs script projects to a local repo, so the whole fleet lives in git with real diffs and real history.
It also means my coding agent can maintain them: several of these scripts get updated by Claude Code sessions (the lunch bot has had entire features added that way — nightly-update logic included). Version-controlled GAS is legitimate infrastructure; browser-tab GAS is a liability with a share link.
When GAS Is the Right Answer
After years of running this fleet next to "real" platforms, my rule of thumb:
- The job touches Google data (Gmail, Sheets, Calendar)? GAS wins by default — being inside the walls beats any API client.
- The job is a small cron (check something, notify somewhere)? GAS is the cheapest scheduler that requires zero infrastructure.
- The job needs a real database, latency guarantees, or a UI? Graduate to Workers — that's the money-tracker → Xu/Tiền path, and the graduation was worth it.
Free compute, first-party data access, a scheduler, an HTTPS endpoint, and git-ops via clasp. The beige box is carrying more of my life than anything else in the rack — and the rack knows it.