Send personalised emails with attachments from Google Sheets
You have a sheet of people. Each person needs their own file, such as a report or a certificate. You also want to email each file to the right person.
Doing this by hand is slow. You make the file, write the email, attach the file, and check the address. Then you do it again for every row.
This guide shows how to make each file and send it in one run.
What you need
- A Google Sheet with an email column, such as "Parent Email".
- A Google Doc or Google Slides template with tags.
- A Drive folder for the files.
- A Gmail or Google Workspace account. The emails go from this account.
How it works
For each row, Fillmore does these steps:
- It fills your template with the values in that row.
- It saves the file in your folder.
- It sends an email to the address in that row.
- It attaches the PDF of that row's file.
The subject and the email text can use tags too. So each person sees their own name.
Step 1: Set up the job
If you have no job yet, follow the mail merge guide first. In short:
- Open Extensions, then Fillmore, then Open Fillmore.
- Press Set up a job for this tab.
- Press Choose template, then Choose folder.
- Check each tag matches a column.
Step 2: Turn on email
Open More options. Turn on Also send each file by email.
Fillmore needs Google's permission to send email as you. If you have not given it yet, the sidebar asks for it. Press Grant access. A Google window opens. Choose Allow, then come back to the sidebar. Fillmore cannot read your inbox.
Step 3: Pick the email column
Under Email column, pick the column with the addresses. Fillmore often picks it for you, if the column name has "email" in it.
One cell can hold more than one address. Split them with a comma or a semicolon. Fillmore sends one email to all of them. Each person can see the other addresses.
Step 4: Write the subject and the text
Write the Subject. Then write the Email text.
You can add a value from the row. Look under Add a column to the email:. Each column has a chip, such as + Student Name. Press it, and Fillmore puts that column's tag where your cursor was.
An example:
Subject: Report for
{{Student Name}}Dear parent, the report for
{{Student Name}}is attached. Thank you.
The email text is plain text. Keep it short and clear.
Press Save job.
Step 5: Test with your own address
Do a test before you email real people. Try one row first sends a real email. So add a test row above your first real row. Use your own name and address in it. Then press Try one row first.
Fillmore makes the file for the first row that needs one. That is your test row. Check the email in your inbox. Is the name right? Is the PDF attached? Does the subject look right?
When it looks right, delete the test row.
Step 6: Send to everyone
Press Make files. Fillmore makes each file and sends each email.
Fillmore skips rows that are done. Only new or changed rows get files. Change a row, and that person gets a new email.
The sheet gets a column called "Fillmore status". It shows the result of each row.
If an email fails, that row fails. Its file is removed too. So the next run makes the file and sends the email again. Fix the problem, then press Retry failed rows.
Each email has a PDF attached
The attachment is always a PDF. A PDF opens the same way on every phone and computer. This is true even when you keep only the filled copy in Drive.
Daily email limits
Fillmore sends with Apps Script's MailApp. Google limits how many people it can email each day. Each address counts once.
| Account | Emails a day |
|---|---|
| Free Gmail | 100 |
| Google Workspace | 1,500 |
Source: Apps Script quotas, read 16 Oct 2026.
To plan a big send, see the daily email limits. Fillmore shows how many emails are left before it starts. Rows over the limit show Failed, with the reason. After 24 hours, press Retry failed rows.
Is my data safe?
Your rows and files stay in your Google account. Fillmore never copies your sheet data to its own server. Read the privacy policy for the details.