Lorixen.
EN

Google Apps Script automations a small office can actually use

Short answer: Apps Script is Google's built-in scripting tool for Sheets, Forms, Gmail, Calendar and Drive, and it's good for small, repetitive office jobs: emailing on a form response, sending reminders from a sheet, creating calendar events, filing Drive uploads and sending a daily summary. Each recipe needs the right trigger (form submit, time-driven or on edit) and has to fit Google's daily quotas. When a script starts touching money, many people's data or outside systems, it's time for a proper tool or developer.

Most small offices already pay for Google Workspace and use a fraction of it. Apps Script lives inside it (Extensions → Apps Script in any Sheet), costs nothing extra, and needs no other accounts. The catch is that someone has to own the scripts.

Before the recipes: triggers in one minute

A trigger is what makes a script run without someone clicking a button. Google's documentation describes two families:

  • Simple triggers, such as onEdit or onOpen, run automatically but can't use services that need authorization (sending email, for example).
  • Installable triggers can use authorized services and include extra event types. They always run under the account of the person who created them. Types include time-driven (clock) triggers, form-submit triggers (one for Google Forms and one for Sheets that receive form responses), and calendar event triggers.

Time-driven triggers can run as often as every minute or as rarely as once a month. Google notes the exact time may be randomized slightly: a daily 9 AM trigger runs at some point between 9 and 10 AM and keeps that timing day to day.

Recipe 1: Form response → tailored email

Trigger: installable form-submit trigger on the Sheet that collects responses. Script: read the answers from the event, pick the right email text (e.g., by service chosen), send it with MailApp or GmailApp, and write "Emailed" plus a timestamp in a status column. Result: the enquirer gets a useful reply in a minute; your team sees who was handled.

A minimal version looks like this:

function onFormSubmit(e) {
  const email = e.namedValues['Email'][0];
  const name = e.namedValues['Name'][0];
  MailApp.sendEmail(email, 'Thanks for your request',
    'Hi ' + name + ', we received your request and will reply within one working day.');
}

Add your own wording, a reply-to address, and a check that the email field isn't empty.

Recipe 2: Reminders from a sheet

Trigger: time-driven, once a day. Script: loop through rows with a due date (contract renewals, equipment checks, client follow-ups), find rows due in the next X days with no "Reminded" mark, email the owner listed in that row, then mark the row. Result: nothing depends on someone remembering to look at the sheet.

Mark reminded rows. Without that, the script emails the same reminder every morning until someone gets annoyed.

Recipe 3: Calendar events from a sheet

Trigger: on-demand from a custom menu, or time-driven every hour. Script: for each new row (job date, start, end, client, address), create an event with CalendarApp in a shared calendar, then store the event ID in the row. Result: jobs booked in the sheet appear in the team's calendars.

Storing the event ID matters: it lets a later run update or delete the event when the row changes, instead of creating duplicates.

Recipe 4: Sorting files in Drive

Trigger: time-driven, every hour or every few hours. Script: look in an "Inbox" folder, read each file's name (e.g., INV_ClientName_2026-11.pdf), move it to the right client or month folder, and log what moved where in a sheet. Result: a tidy shared Drive without anyone dragging files around.

Agree on a naming rule first. A script can only sort what follows a pattern.

Recipe 5: Daily summary email

Trigger: time-driven, once each weekday morning. Script: count yesterday's form responses, open quotes, overdue tasks or orders from the relevant sheets, and send one short email to the team or owner. Result: one message replaces five dashboards nobody opens.

Keep it to the five or six numbers someone will act on.

The limits you'll hit

Google's quotas page (as of November 2026) lists daily limits that differ between free consumer accounts and Google Workspace accounts, and says they can change at any time without notice. The ones small offices notice first:

Limit Consumer (gmail.com) Google Workspace
Script runtime 6 min per execution 6 min per execution
Email recipients per day 100 1,500
Calendar events created 5,000 per day 10,000 per day
Total trigger runtime 90 min per day 6 hr per day
Triggers 20 per user per script 20 per user per script

What that means in practice:

  • A script that loops over thousands of rows can hit the six-minute cap. Process in chunks and store where you stopped.
  • Mass mailing isn't what Apps Script is for. Use a proper email tool for newsletters.
  • Run scripts from a Workspace account, not a personal Gmail, for higher limits and because installable triggers run as their creator.

Keeping scripts from becoming a liability

  • Ownership. Triggers run under the creator's account. If that person leaves and their account is suspended, the automations stop. Create important scripts from a shared admin or role account your organization controls.
  • Documentation. Put a "README" tab in the sheet: what runs, when, and who to ask.
  • Error alerts. Apps Script can email the trigger owner when a run fails. Make sure that inbox is read.
  • Version control. Copy the script before big edits, or use the editor's version history.

When to stop scripting

Apps Script is the right tool until one of these is true:

  • the workflow touches payments, invoices or customer accounts in other systems
  • more than one or two people need to change the logic
  • it needs to connect to several outside apps with their own logins
  • a failure would cost real money or embarrass you with a customer
  • the "simple script" is now several hundred lines nobody else understands

At that point, an automation platform, a small internal web app, or a developer who can own it is cheaper than the next silent failure.

FAQ

Do I need to know JavaScript?

Apps Script uses JavaScript. Basic changes, such as wording or column names, are approachable for non-programmers; anything with loops and conditions benefits from someone who codes.

Why didn't my onEdit script send an email?

Simple triggers can't use services that need authorization. Create an installable trigger for that function instead.

Can Apps Script work with a sheet shared with clients?

It can, but think about who can see the script and the data. Keep automation on internal sheets and share only exports or views with clients.

Does it cost anything?

Apps Script comes with Google accounts at no extra charge, within the quotas above.

If you've got a spreadsheet that runs half your office and want its routine steps scripted properly, show us the sheet and the job.

Sources

WhatsAppLet’s talk