How to Send Bulk Emails Using Google Sheets and Apps Script Free (With Custom Message for Each Recipient)

Introduction
Need to send personalized emails to multiple people — but don't want to spend hours doing it manually or pay for tools like Mailchimp?
Here’s the good news: you can send bulk emails directly from Google Sheets using Google Apps Script, completely free.
Whether you're a freelancer sending proposals, a recruiter emailing candidates, or a teacher sharing updates, this method will save you hours every week.
Let me show you how — step by step.
✅ What You'll Learn
How to structure your Google Sheet for email sending
How to write a script that sends emails row by row
How to include custom names, links, or details in each message
How to trigger it with one click
📋 Step 1: Prepare Your Google Sheet
Create a Google Sheet with these columns:
Name | Message | Status | |
John | john@example.com | Your report is ready. | (Leave blank) |
Anjali | anjali@example.com | Please find your link. | (Leave blank) |
You can add more fields like “Attachment”, “Company”, “Meeting Link”, etc., depending on your needs.
✍️ Step 2: Open Apps Script Editor
In your Google Sheet:
Click Extensions > Apps Script
Delete any existing code
Paste the following script:
javascriptCopyEditfunction sendBulkEmails() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const data = sheet.getDataRange().getValues();
for (let i = 1; i < data.length; i++) {
const name = data[i][0];
const email = data[i][1];
const message = data[i][2];
const status = data[i][3];
if (status !== 'Sent') {
const subject = `Hello ${name}, here's your update`;
MailApp.sendEmail({
to: email,
subject: subject,
htmlBody: `<p>Hi ${name},</p><p>${message}</p><p>Regards,<br>Your Name</p>`
});
// Mark as Sent
sheet.getRange(i + 1, 4).setValue('Sent');
}
}
}
⚙️ Step 3: Run the Script
Click the disk icon to save
Select the
sendBulkEmails
function from the dropdownClick the ▶️ Run button
⚠️ The first time you run it, Google will ask for permission. Click “Review Permissions” → choose your account → “Allow”.
🛠️ Optional: Add a Button to Run It Easily
Go back to the Sheet
Insert → Drawing → Create a button saying “Send Emails”
Click on the drawing > three dots > Assign script → enter
sendBulkEmails
Now you can send emails by just clicking a button!
🔐 Google Quotas to Keep in Mind
Google limits the number of emails you can send via Apps Script:
Account Type | Daily Limit |
Free Gmail | 100/day |
Google Workspace | 1500/day |
So for big lists, split across days or upgrade to Google Workspace.
✅ Final Output
Each person receives a customized email with their name and message. The Sheet marks each row as "Sent", so you don’t resend by mistake.
💡 Real-World Use Cases
Freelancers sending proposals to leads
Event organizers sending invites
Job hunters reaching out to companies
Schools sending notices to students
Customer support follow-ups
👋 Final Thoughts
You don’t need expensive email tools for simple jobs.
With just Google Sheets and a few lines of code, you can send bulk personalized emails and automate your workflow like a pro.
Subscribe to my newsletter
Read articles from RAUSHAN KUMAR directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

RAUSHAN KUMAR
RAUSHAN KUMAR
Hi, I’m Raushan — a developer who helps businesses automate workflows, scrape data legally, and build tools using Python, Bash, and Chrome Extensions. I specialize in building lightweight automations that save hours of repetitive work and turn complex ideas into simple command-line tools.