Google Sheets mail merge with Apps Script, or with an add-on?
Google Sheets has a free tool built in: Apps Script. With it, you can write a small program for your sheet. Many people use it for a mail merge.
So do you need an add-on at all? Sometimes not. This guide compares the 2 ways honestly. Fillmore is an add-on, so we say where a script is the better choice too.
What Apps Script is
Apps Script is JavaScript that runs on Google's computers. Open your sheet, then Extensions, then Apps Script. An editor opens, linked to that sheet.
Google publishes a free mail merge sample. It sends emails from a Gmail draft, filled from your sheet. See Create a mail merge with Gmail and Google Sheets, read 20 Oct 2026.
Here is the smallest script that sends an email. It sends one test email to the address you type in:
function sendTest() {
MailApp.sendEmail("you@example.com", "Test", "Hello from Apps Script.");
}This one shows how many emails you have left today:
function emailsLeft() {
Logger.log(MailApp.getRemainingDailyQuota());
}The limits are the same
Fillmore sends with Apps Script's MailApp. So these limits apply to it and to your own scripts:
| What | Free Gmail account | Google Workspace account |
|---|---|---|
| Email addresses a day | 100 | 1,500 |
| New Docs or Slides a day | 250 each | 1,500 each |
| Time for one run | 6 minutes | 6 minutes |
Source: Apps Script quotas, read 20 Oct 2026.
The email limit guide explains how the count works.
When a script is the better choice
A script is a good fit when:
- You can read and change JavaScript, or someone on your team can.
- You only send emails, with no document for each row.
- The list is short, so one run finishes in 6 minutes.
- You need a rule no tool has, such as your own spreadsheet logic.
A script costs nothing. You can read every line of it. You also own every fix when it breaks.
What a script leaves to you
A merge that makes documents needs more work. These are the parts people often meet later:
- Long runs: One run stops after 6 minutes. Your script must save its place and go on later.
- Repeats: The script must know which rows are done. Otherwise a second run sends again.
- Mistakes: If the template had a typo, you remove the files by hand.
- Permissions: A script you write often asks to see all your Drive files. That is broader than many people want.
- Errors: You read the error log, and you find the row that failed.
None of this is hard for a developer. It is real work for everyone else.
What Fillmore does instead
Fillmore is an add-on for this one job. Each row makes a Doc, Slides file or PDF. It can email each file too.
- It continues a run past 6 minutes by itself.
- It skips rows that are done, so a second run makes no repeats. See how only new rows get files.
- It writes each row's result in a "Fillmore status" column.
- Undo this run moves the files of the latest run to Drive trash.
- It sees only the template and folder you pick, not your whole Drive.
It does not run your own code. If you need custom logic, a script is still the answer.
A fair way to decide
Try both on a copy of your sheet. Run Google's sample with 3 rows. Then set up the same job in Fillmore, following the mail merge guide. Keep the one that you can still fix in 6 months.
Common questions
Is Apps Script safe to use?
It runs as you, with the permissions you give it. Only run code you trust and understand.
Can I use both?
Yes. They work side by side in one sheet. If your script sends with MailApp, both use the same daily email count.
Does Fillmore use GmailApp?
No. Fillmore sends with MailApp, which cannot read your inbox.