Most businesses that run on Google Workspace are sitting on a free automation platform and have never opened it. It lives behind a menu item most people scroll past: Extensions, then Apps Script.
I use it constantly, usually for the small, unglamorous jobs that do not justify a bigger tool. Here is what it is and when it is the right choice.
What it is
Google Apps Script is a scripting platform, based on JavaScript, that runs on Google's servers and connects directly to Google's own products: Sheets, Docs, Gmail, Calendar, Drive and Forms. You write a small piece of code, and it can read and change anything in those tools, on a schedule or in response to something happening.
There is nothing to install and nothing to host. The code lives attached to your document or in a standalone project, and Google runs it.
What it is good for
- Form to action. A Google Form is submitted and the script sends a confirmation email, creates a document or adds a calendar event.
- Spreadsheet as a small system. Flag overdue rows, send a weekly summary, or assign unique IDs like BH/001 to new entries.
- Email automation. Send personalised messages from a sheet of contacts.
- Document generation. Merge sheet data into a template to produce a contract or report.
- Calling other services. Fetch data from an API, or send a row to an AI model for classification.
A working example
Here is a small script that runs whenever someone submits a Google Form linked to a sheet. It emails the person a confirmation. It is deliberately short, so you can see the whole idea.
function onFormSubmit(e) {
var answers = e.namedValues;
var name = answers['Name'][0];
var email = answers['Email'][0];
var subject = 'We have received your request';
var body = 'Hi ' + name + ',\n\n' +
'Thanks for getting in touch. We will reply within one working day.\n\n' +
'The team';
GmailApp.sendEmail(email, subject, body);
}
To use it, open the sheet connected to your form, go to Extensions, then Apps Script, paste the function and set a trigger so it runs when the form is submitted. The column headings in your sheet must match the names used in the script, here "Name" and "Email".
Triggers: making it run itself
A script that you have to start by hand is just a macro. Triggers are what make it an automation:
- On form submit: runs when a response arrives.
- On edit: runs when a cell changes.
- Time-driven: runs every hour, every day at a set time, every Monday.
- On open: adds a custom menu when someone opens the file.
The time-driven trigger is the one I use most. "Every morning at 7, check the sheet for anything overdue and email me the list" takes ten minutes to build and saves a daily chore.
The limits to know
Quotas are real. Google limits how long a script may run, how many emails it can send per day, and how much it can fetch. The limits differ between free and paid accounts and change over time, so check Google's current quota page before building anything that sends in bulk or runs for a long time.
- Execution time limits. Long jobs must be split into chunks.
- No built-in visual builder. It is code, so there is a learning curve compared with drag-and-drop tools.
- Debugging is basic. You get logs and an execution list, but nothing like a visual run history.
- Tied to Google. It shines inside Google's tools and is awkward outside them.
- Ownership. A script lives under someone's account. If that person leaves, the automation can stop. Keep scripts under a shared or company-owned account and document them.
Apps Script or something else?
| Situation | Good choice |
|---|---|
| Everything happens inside Google Workspace | Apps Script |
| Small, simple, free, and you are comfortable with light code | Apps Script |
| Connecting many different apps with visual logic | n8n or Make.com |
| High volume, long-running, or needs good monitoring | A proper workflow platform |
| A non-technical team must maintain it | A visual tool |
I compare the visual platforms in n8n vs Make vs Zapier, and the wider question of when to write code at all is in no-code vs low-code vs custom code.
Apps Script is not the most powerful tool and it is not the prettiest. But it is free, it is already connected to the place your data lives, and for the small jobs that eat everyone's week it is often the fastest route from "someone should automate this" to done.