Most small and mid-sized businesses run on spreadsheets, and that is not a failure. A spreadsheet is the fastest tool ever invented for turning an idea into a working process. A sales tracker, an inventory list, a leave register and a commission calculator can all be built in an afternoon, by the person who understands the work.
The trouble starts when that spreadsheet becomes the system. Someone has to remember to send the weekly report. Someone else copies data from a form into a tab. A third person chases approvals over chat. Google Sheets combined with Apps Script can remove much of that manual effort at almost no cost. This guide shows what is realistic, how to build it safely and how to recognise the point where a custom application becomes the smarter investment.
Automate the boring handoffs first. People are rarely slowed down by the work itself, but by waiting for the next person to notice it.
Apps Script sits inside your Google Workspace account. It can read and write cells, send Gmail messages, create Google Docs from templates, add Calendar events, call external web services and run on a timer or in response to an event such as a form submission or a cell edit. Because it lives next to your data, there is nothing to host and nothing to log in to separately.
Typical jobs that suit it well include:
Imagine a small trading company whose sales team logs enquiries in a shared sheet. This is a hypothetical scenario used for illustration. Today, a manager scans the sheet each morning, finds enquiries older than two days with no update and messages the owner. It takes time, depends on one person's diligence and fails when that person is on leave.
With Apps Script, the sheet can do this by itself. A script runs every morning, reads the enquiry tab, finds rows where the status is still "new" and the logged date is older than the agreed threshold, and emails each owner a short list of their stale enquiries. A second script can notify the manager only about repeated misses. The team still works in the familiar sheet, but the follow-up discipline is now built in rather than depending on memory.
The same pattern fits many functions: a finance team chasing unpaid invoices, an HR team tracking probation reviews, an operations team watching expiring licences. The shape is always read, decide, notify.
Keep raw entries on one tab, calculations on another and presentation or reports on a third. People can type freely into the input tab without damaging formulas, and scripts have predictable places to read and write.
If a script calls an external service, store API keys in the script properties rather than in a cell or in the code. Sheets are shared widely, and a visible key is a security incident waiting to happen.
Scripts hit quotas, networks drop and someone renames a column. Catch errors, record them, and notify an owner when a run fails. Our guide on building business workflows that fail safely goes deeper on retries, alerts and fallbacks.
A script runs with the permissions of the person who authorised it. If that person leaves the company and their account is removed, the automation stops. Use a shared service-style account where policy allows, and review ownership whenever staff change roles.
Apps Script is not a database or an application server. Scripts have maximum run times and daily quotas, large sheets slow down, and several people editing the same rows simultaneously can overwrite each other. Sheets also offer coarse permissions: it is hard to let a person see only their own rows without workarounds that can leak data.
Warning signs that you have reached the ceiling include:
When you see several of these, read our guide on moving from spreadsheets to custom software. It explains how to migrate without a risky big-bang switch. For teams who would rather connect existing apps than write scripts, we also compare options in choosing between n8n, Zapier, Make and custom code.
Apps Script can call modern language model services, which opens useful possibilities: summarising long feedback entries, categorising support emails into tabs, extracting fields from pasted text or drafting a first reply for a human to approve. Keep a person in the loop for anything customer-facing, and avoid sending sensitive personal data to external services without checking your policies. If you want to explore this properly, our AI development team can help design something safe and measurable.
Most SMEs travel through the same stages. First, a spreadsheet records the work. Second, formulas and filters reduce the effort of reading it. Third, scripts automate the handoffs. Fourth, a custom application takes over the parts where concurrency, permissions and reliability matter most, while Sheets continues to serve for ad hoc analysis. Knowing which stage you are in helps you invest the right amount of effort and avoid both under-building and over-building.
A few habits separate automations that last from those that quietly rot. First, name everything clearly. A function called sendStaleEnquiryReminders explains itself a year later, while myFunction2 does not. Second, keep configuration such as thresholds, email addresses and sheet names in a dedicated settings tab, so a business user can change "two days" to "three days" without opening code. Third, add a visible "last run" cell so anyone can see at a glance whether the automation is alive.
It also helps to review your automations quarterly. Processes change, people move on and the rule that made sense in January may be wrong by July. A short review, asking whether each script is still needed, still correct and still owned, prevents silent failures. For example, a reminder that keeps emailing a former employee is not just annoying, it can leak customer details to a mailbox nobody monitors.
Finally, think about training. A one-page guide that explains how to add a row, what each status means and who to contact when something looks wrong will save more time than any clever formula. Automation succeeds when the people around it understand how it behaves.
Google Sheets and Apps Script give small businesses a surprisingly powerful automation toolkit. Start with one painful handoff, write the rule plainly, test on a copy, log every run and name an owner. You will free up hours every week and learn exactly how your process works. When the sheet starts to strain under growth, you will have a clear specification ready for a purpose-built system, and that is a very good place to start from.