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.