
1. Let’s Talk About Your Inbox Problem
Be honest — how many unread emails are sitting in your inbox right now?
10? 100? 5,000?
If you’re like most people, your Gmail is a mix of:
- Important client messages you need to reply to
- Newsletters you keep meaning to read
- Invoices you should file away
- Random “FYI” emails that don’t need a response
And every day, more keep coming.
Here’s the problem: your inbox is doing the job of an assistant… badly.
What if instead, you had an actual digital assistant that:
- Automatically files emails into folders (labels)
- Sends polite replies when you’re busy
- Deletes junk before you even see it
- Reminds you to follow up on important threads
The good news?
You can build that assistant today — for free — using Google Apps Script.
2. What is Google Apps Script (and Why Should You Care)?
Think of Google Apps Script as a magic remote control for your Gmail.
It’s built right into your Google account and speaks JavaScript (the language of the web).
With it, you can:
- Search your inbox like a pro (beyond Gmail’s built-in filters)
- Move, label, and star emails automatically
- Send scheduled or template-based messages
- Connect Gmail to Sheets, Docs, Drive, Slack, and more
Best part?
It runs in the cloud. You don’t have to keep your laptop open — scripts can run automatically at 3 AM while you’re sleeping.
3. What You Can Automate with Gmail + Apps Script
Let’s look at real-life things you could automate:
Task | Automation Example |
---|---|
Labeling | Tag all invoices from billing@vendor.com as “Invoices” |
Archiving | Move newsletters older than 14 days to “Archive” |
Follow-ups | Send a reminder if a client hasn’t replied in 7 days |
Out-of-office | Auto-reply to emails with a custom message |
Daily summary | Email yourself a digest of unread priority messages |
4. Setting Up Your First Gmail Automation
Step 1 — Open Google Apps Script
- Go to script.google.com
- Click New Project
- Give it a name:
Gmail Automation
Step 2 — Authorize Gmail Access
Apps Script uses the GmailApp
service. The first time you run your script, it’ll ask for permission.
5. Your First Script: Read the Latest Emails
Here’s a fun start — let’s pull your 5 most recent emails and log their subject lines.
javascriptCopyEditfunction readRecentEmails() {
var threads = GmailApp.getInboxThreads(0, 5);
threads.forEach(function(thread) {
Logger.log("Subject: " + thread.getFirstMessageSubject());
});
}
Click Run ▶, approve permissions, then check View > Logs.
You’ll see your latest email subjects — magic!
6. Automatically Labeling Emails
This is where it gets powerful.
Let’s say you get invoices from billing@example.com
and you want them neatly stored.
javascriptCopyEditfunction labelInvoices() {
var label = GmailApp.createLabel("Invoices");
var threads = GmailApp.search('from:billing@example.com');
threads.forEach(function(thread) {
thread.addLabel(label);
});
}
Run this once, and all matching emails will be neatly labeled.
Run it daily with a trigger (we’ll cover that soon), and your inbox stays clean forever.
7. Archiving Newsletters Automatically
Why waste time manually archiving old newsletters?
Let’s move anything from “newsletter@news.com” older than 30 days out of sight.
javascriptCopyEditfunction archiveOldNewsletters() {
var date = new Date();
date.setDate(date.getDate() - 30);
var searchQuery = 'from:newsletter@news.com before:' + Utilities.formatDate(date, Session.getScriptTimeZone(), 'yyyy/MM/dd');
var threads = GmailApp.search(searchQuery);
threads.forEach(function(thread) {
thread.moveToArchive();
});
}
8. Sending Automatic Replies
Heading on vacation? Apps Script can send custom “out of office” messages — with personality.
javascriptCopyEditfunction autoReplyToClients() {
var threads = GmailApp.search('is:unread from:(client1@example.com OR client2@example.com)');
threads.forEach(function(thread) {
var message = thread.getMessages()[0];
if (message.isUnread()) {
thread.reply("Hey there! Thanks for your email — I’m currently away from my desk but will get back to you soon.");
message.markRead();
}
});
}
9. Scheduling Automations (Triggers)
The real magic is making these run without you pressing a button.
How to set a daily trigger:
- Open Apps Script
- Click the clock icon (Triggers)
- Select your function (e.g.,
archiveOldNewsletters
) - Set it to run daily
Boom — you’ve just hired a robot to do your email filing.
10. Going Pro: Gmail + Google Sheets
You can even log emails to a Google Sheet for tracking.
Example: Store unread important emails in a Sheet
javascriptCopyEditfunction logImportantEmails() {
var sheet = SpreadsheetApp.openById("YOUR_SHEET_ID").getActiveSheet();
var threads = GmailApp.search('is:unread label:important');
threads.forEach(function(thread) {
sheet.appendRow([
thread.getFirstMessageSubject(),
thread.getMessages()[0].getFrom(),
thread.getLastMessageDate()
]);
});
}
11. Security & Best Practices
- Limit permissions: Only authorize scripts you trust.
- Test before automating: Make sure your query catches only the right emails.
- Use labels over deletion: Safer in case of mistakes.
- Document your scripts: So you remember what they do months later.
12. Wrapping Up
With just a few lines of Apps Script, you can turn Gmail from a cluttered inbox into an automated email machine.
You’re no longer a slave to your inbox — your inbox now works for you.
This isn’t about replacing the human touch — it’s about saving your energy for the conversations that actually matter.
Next time you find yourself doing the same email task twice…
Stop. Think. And let Apps Script take over.
Leave a Reply