Google Sheets has a built-in Tools → Notification settings → Edit notifications, and for some jobs it’s enough. But it only emails you, about any change, in Google’s wording. It can’t say “email the requester when their request is approved” or “email the buyer when stock drops below 5”.
This guide sets up those alerts with Sheets Alerts, a free, MIT-licensed Apps Script.
Code.gs with this Code.gs.At the top of the script is an ALERTS list. Each alert says: on this tab, when this column changes in this way, email these people this message.
const ALERTS = [
{ tab: 'Requests', column: 'D', when: 'equals:Approved', to: 'E',
subject: 'Your request "{{Item}}" was approved',
message: 'Hi {{Name}},\n\nYour request for {{Item}} was approved.\n\nSee the sheet: {{Link}}' },
];
when is the condition (table below).to is either email addresses ('me@example.com, boss@example.com') or a column letter like 'E', meaning “the address in column E of the row that changed”.subject and message can use any column name from row 1 in double curly braces, like {{Name}}, plus {{Old Value}}, {{New Value}}, {{Cell}}, {{Tab}}, {{Editor}}, and {{Link}}, which opens the sheet at the changed cell. \n starts a new line.| Condition | Emails when the cell… |
|---|---|
any |
changes at all |
equals:Approved |
becomes “Approved” (any capitalization) |
contains:urgent |
starts containing “urgent” |
checked |
is ticked |
above:100 / below:5 |
goes above 100 / below 5 |
blank |
is emptied |
Alerts fire when the condition becomes true. Changing an Approved request’s other columns, or re-typing “Approved”, doesn’t send it again.
Click Save.
Reload the sheet, then 🔔 Alerts → Turn On. Approve Google’s prompt (“Google hasn’t verified this app” → Advanced → Go to (your project name) → Allow). It’s your own script, and emails go out from your Gmail.
Test it: change a cell so the condition becomes true, and check the inbox.
// Low stock: email purchasing when quantity (column C) drops below 5
{ tab: 'Stock', column: 'C', when: 'below:5', to: 'purchasing@example.com',
subject: 'Low stock: {{Product}}', message: '{{Product}} is down to {{New Value}}. {{Link}}' },
// New urgent ticket: email the team when Priority (column B) is set to Urgent
{ tab: 'Tickets', column: 'B', when: 'equals:Urgent', to: 'team@example.com',
subject: 'Urgent: {{Title}}', message: '{{Editor}} marked "{{Title}}" urgent. {{Link}}' },
// Ticked "Notify client" checkbox in column H: email the client in column F
{ tab: 'Projects', column: 'H', when: 'checked', to: 'F',
subject: 'Update on {{Project}}', message: 'Hi {{Client}},\n\n{{Latest update}}\n\nThanks!' },
Who is the email from? From your Gmail account, whoever edited the sheet. It counts against Google’s daily sending limit for scripts (about 100 recipients a day on a free account).
Does it work when other people edit? Yes, for everyone who can edit the sheet. Edits by people outside your Google Workspace organization show a blank {{Editor}}, because Google keeps their address private.
Does it fire for Google Form responses or formulas? No, only for cells people edit by hand, one cell at a time.
How do I stop it? 🔔 Alerts → Turn Off.