What is MailApp in Google Sheets?
MailApp is an Apps Script service that sends email from your Google account without opening Gmail. You call MailApp.sendEmail with a recipient, subject, and body, often using cell values as the content. It is the fastest way to notify someone when a row is added or a deadline hits in a tracker.
When to use it
Use MailApp for straightforward notifications: form responses, approval requests, weekly KPI summaries, or alerts when a status column changes to Urgent.
When to skip it
Skip MailApp for marketing blasts, highly customized threading, or reading inbox labels. GmailApp fits those cases but needs broader Gmail permissions.
How it works
-
1
Write a function that builds recipient, subject, and body strings from sheet ranges.
-
2
Call MailApp.sendEmail(to, subject, body) or pass an options object for HTML and attachments.
-
3
Run once manually to trigger the authorization dialog for sending mail.
-
4
Bind the function to a trigger (on form submit or time-driven) for automatic sends.
-
5
Respect daily sending quotas per user and keep bodies short to avoid spam filters.
-
6
Log send results or errors to a Mail Log tab for support when someone says they did not get it.
Examples in Google Sheets
Notify assignee on new task
When a row is added with Assignee email in column C, MailApp sends "New task: " plus the title from column B.
HTML table summary
Build an HTML string of overdue rows and pass htmlBody in the options object so the message renders as a table in Gmail.
Attachment from Drive
Use MailApp with attachments blob from a PDF exported in the same script run after a manager approves a row.
Better Sheets resources
Common mistakes
-
Sending to external addresses in a loop without batching, hitting the daily MailApp quota quickly.
-
Putting unsanitized cell text into htmlBody, which can break layout or create odd rendering.
-
Forgetting that recipients see the sender as the account that authorized the script, not "the sheet."
-
Triggering an email on every onEdit, flooding inboxes when someone pastes a column.
-
Not handling blank email cells, which causes send failures logged only in Executions.
Frequently asked questions
- What is the difference between MailApp and GmailApp?
- MailApp only sends mail with a simpler permission model. GmailApp can read, label, and thread messages but requires Gmail scope and is heavier to authorize.
- How many emails can MailApp send per day?
- Google documents daily quotas for consumer and Workspace accounts. Check current Apps Script quota pages because limits can change.
- Can MailApp send to multiple recipients?
- Yes. Pass a comma-separated string or array of addresses in the to field, and use cc or bcc options when needed.
- Do recipients need access to the sheet?
- No. They only need a valid email address. Attach or link files separately if they need the data.
- Can I send from a group alias?
- The From address is generally the authorizing user. Group send-as aliases depend on Workspace settings and are not guaranteed in all accounts.
- Why did my MailApp script fail silently?
- Open Executions in Apps Script. Quota errors and invalid addresses appear there even when the sheet shows no error.
- Is HTML email supported?
- Yes. Supply htmlBody in the options object. You can still set plain body as a fallback.
- Can MailApp run on a trigger while I sleep?
- Time-driven triggers can call MailApp if the trigger owner has authorized the script and quota remains.
Related Tutorials
Watch how MailApp works
Send a Button from Google Sheets in an Email
Spreadsheet Automation 101 Lesson 3: MailApp
I Created an Automatic Emailer
Automated Project Management in Google Sheets
Email Yourself a Cell from a Google Sheet, Every Day
Send Better Email When Google Form Filled Out
Related blog posts
Guides that explain MailApp in more depth.
Email Yourself a Cell from a Google Sheet, Every Day
I'll show you how to email yourself one single cell data. That's one sheet, one cell, one email every single day.
Read post →Simply Email Yourself From a Google Sheet
I wanted to share with you one of the simplest apps scripts that has immense power. Email! You can email others, but you can also email yourself.
Read post →How to Use Google Sheets for Advanced Project Management
Master Google Sheets for project management with these advanced tips. Check our free tutorials, tools, and templates for data management, task flow, and much more.
Read post →Related terms
Apps Script triggers
Triggers tell Apps Script when to run a function: on edit, on open, on a schedule, or when a form is submitted. Simple triggers use reserved names like onEdit. Installable triggers are created in the Apps Script Triggers page and can do more, including running as a specific user or on a timer.
Read guide →Script Editor
The Script Editor is the Apps Script workspace inside your spreadsheet where you write JavaScript that talks to Sheets, Gmail, and other Google services. You open it from Extensions > Apps Script. Every function you save can be run manually, bound to a trigger, or linked from a custom menu.
Read guide →Google Sheets automation
Automation means work happens without repeating the same clicks every day: imports update, emails send, rows move, and dashboards refresh. In Sheets, automation usually stacks built-in features, Apps Script, and sometimes the Sheets API or add-ons. Start with the lightest tool that still solves the job.
Read guide →Google Sheets workflows
A workflow is the path work takes through your sheet: intake, review, approval, done. Good workflows use consistent columns, statuses everyone understands, and just enough automation to move tasks forward without hiding steps from the team.
Read guide →Done reading about MailApp?
Membership unlocks 600+ tutorials, unlimited generators, and every template. Practical lessons. Zero fluff.
Need this once
Jump to a free tool or a single tutorial for this topic.
Learning Sheets for real
Unlock the full library, generators, and templates with membership.