"Should we use AppSheet or Apps Script?" is the wrong question — and I've watched teams waste weeks arguing it. They're not competitors. AppSheet delivers a UI; Apps Script runs logic. Most production setups I build end up using both. This post is how to decide which does what, what it actually costs per user, and the hybrid pattern you'll probably land on.
What each one actually is
AppSheet is a no-code app builder. Point it at a Google Sheet and it generates a mobile/web app — forms, lists, role-based views, offline sync, GPS and camera — without writing code. Apps Script is a JavaScript runtime inside Google Workspace: it runs logic, calls any API, handles webhooks, and automates Sheets/Gmail/Calendar/Docs. PowerApps is Microsoft's AppSheet — pick it only if your data and team already live in Microsoft 365.
The one-line test: AppSheet is for the interface, Apps Script is for the logic.
The decision matrix
| What you need | Pick |
|---|---|
| Mobile app for field workers (offline, GPS, camera) | AppSheet |
| Internal CRUD tool for under ~10 users | AppSheet |
| Form with dependent dropdowns + per-role permissions | AppSheet |
| Quick prototype to validate an internal idea | AppSheet |
| Custom logic / heavy data processing (>1,000 rows) | Apps Script |
| AI integration (OpenAI / Anthropic / Gemini) | Apps Script |
| Webhook receiver (Stripe, Twilio, Magento) | Apps Script |
| Customer-facing portal with custom branding | Apps Script |
| A tool 50+ employees use daily | Apps Script (cost) |
| A production system meant to last 5+ years | Apps Script (control) |
Both keep your data in the same place — a Google Sheet you own — so choosing one now doesn't lock you out of the other later.
The cost nobody mentions
AppSheet is priced per user (as of 2026): roughly $5/user/mo Starter, $10 Core, $20 Enterprise Plus. Apps Script is $0 — no per-user fee at any headcount, under standard Workspace quotas.
That gap compounds. A 30-person warehouse team on AppSheet Core is $3,600/year, every year, forever. At 100 users it's $12,000/year. If the app is mostly logic that could run free in Apps Script, that's pure overhead. The rough break-even: below ~10–15 users, AppSheet's UI quality is worth the fee; past ~20 users, Apps Script gets dramatically cheaper over a multi-year horizon.
The hybrid pattern most teams land on
Here's the setup I ship most: AppSheet for the UI, Apps Script for the logic, one Google Sheet underneath. Field staff use the AppSheet app; when something needs real logic, an AppSheet Automation "Call a script" bot hands off to Apps Script.
A concrete example: AppSheet captures a support ticket beautifully, but computing a business-hours SLA due date is the kind of thing its expression language can't express cleanly. So the AppSheet bot calls this, and stores what it returns:
// Apps Script — the logic layer an AppSheet "Call a script" bot invokes,
// passing the ticket's created-at time. Returns the SLA due date to AppSheet.
function slaDueDate(createdAt) {
return addBusinessHours(new Date(createdAt), 8); // 8 working hours
}
// Add N business hours (Mon–Fri, 09:00–17:00), skipping nights & weekends.
function addBusinessHours(start, hours) {
const OPEN = 9, CLOSE = 17;
let d = new Date(start), left = hours;
while (left > 0) {
if (d.getDay() === 0 || d.getDay() === 6) { // weekend -> next day 09:00
d.setDate(d.getDate() + 1); d.setHours(OPEN, 0, 0, 0); continue;
}
if (d.getHours() >= CLOSE) { // after close -> next day
d.setDate(d.getDate() + 1); d.setHours(OPEN, 0, 0, 0); continue;
}
if (d.getHours() < OPEN) d.setHours(OPEN, 0, 0, 0); // before open -> open
const hoursToClose = CLOSE - d.getHours();
const take = Math.min(left, hoursToClose);
d.setHours(d.getHours() + take);
left -= take;
}
return d;
}
I unit-tested addBusinessHours before shipping — the cases that matter are a ticket that rolls past 5 pm to the next morning, one filed on a Friday afternoon landing on Monday, and one filed over the weekend. AppSheet gives you the polished form; Apps Script gives you the logic AppSheet can't. (For the API calls in that logic layer, wrap them with retries — see UrlFetchApp quotas & retries.)
When neither is right
Be honest about the edges. If you need a public, high-traffic consumer product, a real-time collaborative editor, or a system with strict compliance certifications (HIPAA/SOX at scale), you've outgrown the Sheet-backed approach — reach for a proper database and app framework. AppSheet and Apps Script shine for internal and SMB tools, not a venture-scale SaaS.
Wrap-up
Stop framing it as AppSheet or Apps Script. Use AppSheet when the hard part is the interface — mobile, offline, roles, forms. Use Apps Script when the hard part is the logic — APIs, AI, heavy processing, or a headcount where per-user pricing hurts. And when both are hard, run them together on one Sheet: that's the setup most teams quietly end up with.
The production version of the hybrid — the AppSheet bot wiring, the Apps Script logic layer, and the cost model for your headcount — is written up on the MageSheet blog.
Built by the MageSheet team.

Top comments (0)