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. 1

    Write a function that builds recipient, subject, and body strings from sheet ranges.

  2. 2

    Call MailApp.sendEmail(to, subject, body) or pass an options object for HTML and attachments.

  3. 3

    Run once manually to trigger the authorization dialog for sending mail.

  4. 4

    Bind the function to a trigger (on form submit or time-driven) for automatic sends.

  5. 5

    Respect daily sending quotas per user and keep bodies short to avoid spam filters.

  6. 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.

Build this without starting from a blank cell

Use a Better Sheets tool for MailApp, then watch a walkthrough when you want the full pattern.

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

Browse more tutorials
Send a Button from Google Sheets in an Email

Send a Button from Google Sheets in an Email

quick fun video to show you how to add a button to emails when you send ...
Spreadsheet Automation 101 Lesson 3: MailApp

Spreadsheet Automation 101 Lesson 3: MailApp

Learn about the needed variables for the Mail App to work. In this lesso...
I Created an Automatic Emailer

I Created an Automatic Emailer

While creating SheetOps, a new product, I came up with this idea of an a...
Automated Project Management in Google Sheets

Automated Project Management in Google Sheets

Create automatic notifications when a project is assigned, a project nee...
Email Yourself a Cell from a Google Sheet, Every Day

Email Yourself a Cell from a Google Sheet, Every Day

Learn how to email yourself a cell from a Google sheet every day in just...
Send Better Email When Google Form Filled Out

Send Better Email When Google Form Filled Out

Find out how to email all the form entries each time your form is filled...

Related blog posts

Guides that explain MailApp in more depth.

Browse the blog

Related glossary terms

Done reading about MailApp?

Membership unlocks 636+ 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.