Part 1 left the ticket sitting in the backlog: "Save [Client] email attachments to shared Drive folder." No architecture, no requirements doc — just a shared inbox, a sales rep who's tired of checking it, and a sprint that was already full.
Whoever picks that ticket up quickly discovers it splits into two separate problems. Reading a file out of Google Drive is a solved problem — clean API, predictable structure. Reliably finding the right email in an inbox that receives everything from client reports to newsletter spam is the actually hard part. Email wasn't built to be a trigger for anything, so "search the inbox for specific emails" ends up being the real engineering task, and "save it to Drive" is just the easy last step once you've found it.
What "search the inbox for specific emails" actually means
In practice, a search that's reliable enough to run unattended needs to narrow on more than one signal at once, because any single filter is too loose:
- Sender — only trust attachments from an address (or domain) the client actually uses.
- Subject line or label — clients often reuse a consistent subject format ("Weekly Report — [Client Name]") or you can ask them to apply a Gmail label.
- Attachment type — restrict to
.xlsx,.csv,.xlsso you're not pulling in signature-image PDFs. - Recency — only look at messages newer than the last successful run, so you're not reprocessing the same file every hour.
Gmail's own search syntax already supports all of this — the same operators you'd type into the Gmail search bar (from:, subject:, has:attachment, filename:, newer_than:) work identically through the Gmail API and Google Apps Script's GmailApp.search() method.
Building it yourself: a minimal Apps Script version
For a single client, or a first prototype, this is genuinely a small script. Google Apps Script avoids standing up any infrastructure — it runs on Google's servers on a schedule you set.
function saveClientAttachmentsToDrive() {
// Narrow the search: right sender, has an attachment,
// spreadsheet file types only, only messages since the last run.
const query = 'from:reports@clientdomain.com has:attachment '
+ '(filename:xlsx OR filename:csv OR filename:xls) newer_than:1d';
const folder = DriveApp.getFolderById('YOUR_DRIVE_FOLDER_ID');
const threads = GmailApp.search(query);
threads.forEach(thread => {
thread.getMessages().forEach(message => {
message.getAttachments().forEach(attachment => {
folder.createFile(attachment);
});
});
});
}
Wire that to a time-driven trigger (Apps Script → Triggers → time-based, hourly or daily) and the inbox-watching job that used to belong to a sales rep now runs itself.
Why teams often don't stop there — and why they should think twice before they don't
This is exactly where Part 1 left off: the script works for one client, then a second client sends a slightly different format, then a third. Each new client either means a new branch of if statements or a near-duplicate script — and now there are several small automations that can each break quietly, with nobody but the engineer who wrote them able to debug a failure at 2am.
Note
None of that is a reason not to build the first version yourself — it's a reason to be honest about when a script stops being "a quick fix" and starts being "a system nobody signed up to maintain." That's the point where it's worth comparing what you'd build against what already exists.
Ready-made tools, compared
Not every version of this problem needs an engineer. If you're a sales or ops person trying to solve this yourself, the question isn't "which tool is most powerful" — it's "which one can I set up today without filing a ticket." The six options below span the full range, from click-and-configure add-ons to code you maintain yourself. Pricing and feature limits are pulled from each vendor's own site as of August 2026 and are worth double-checking before you commit.
| Tool | What it does | Launched from | Setup effort | Fully automated on free tier? |
|---|---|---|---|---|
| Attachment Hippo | Gmail add-on that saves matching attachments to Drive, based on sender, subject, or label rules | Gmail | Easy | Yes |
| Save Emails and Attachments | Google Sheets add-on that saves matching emails and attachments to Drive, with an activity log kept in the sheet | Google Sheets | Easy | No |
| Zapier | No-code platform for connecting Gmail to Drive through a workflow | Zapier | Moderate | Yes |
| Make | No-code visual workflow builder, similar model to Zapier | Make | Moderate | Yes |
| n8n | Open-source workflow automation tool | n8n's own editor (self-hosted or n8n.cloud) | Technical | Yes |
| Google Apps Script / Gmail API | Custom code that searches Gmail and saves matches to Drive | script.google.com | Technical | Yes |
Which option actually fits
The six tools split into the three setup-effort tiers above, and which one fits depends on who's doing the setup and how the workflow needs to run — not on which tool is "best" outright.
Easy tier — Attachment Hippo and Save Emails and Attachments. Both let a sales or ops person search an inbox for specific emails and save matching spreadsheet attachments to Google Drive without writing code or learning a new platform. The difference is where setup happens and what's included for free: Attachment Hippo is configured entirely inside Gmail and runs automatically once a day on its free tier; Save Emails and Attachments is configured from a Google Sheet, which suits teams that want a running log of everything saved, but its free version only saves attachments when someone manually clicks "run" — background automation requires a paid plan.
Moderate tier — Zapier and Make. These fit once the requirement grows past "just save the file" — for example, saving the attachment and then posting to Slack or updating a CRM record. Both require learning a dedicated workflow-builder platform outside Gmail, and both cap free-tier automation to a 15-minute polling interval rather than reacting instantly.
Technical tier — Google Apps Script/Gmail API and n8n. These make sense once there are enough clients that per-task pricing starts to matter, or the filtering logic needs to be genuinely custom — multiple sender formats, conditional branching, non-standard file naming. Both require someone who can write and maintain code, and both run fully automated once set up: Apps Script through a time-driven trigger, n8n through a self-hosted or cloud workflow.
Every option here solves the same underlying problem from Part 1: turning "search the inbox for specific emails" from something a person has to remember to do into a process that runs whether or not anyone's watching.
- Reliable inbox search requires at least four signals: sender, subject or label, attachment type, and recency.
- A minimal Apps Script function covers all four and runs on Google's own servers — no infrastructure needed.
- The script stops scaling cleanly around client three: that's when it becomes a system, not a fix.
- For non-engineers, Attachment Hippo and Save Emails and Attachments both solve this without code; the difference is where you configure them and what's automated for free.
- For engineers handling multiple clients or custom logic, Apps Script and n8n are the right-sized tools once per-task pricing starts to matter.
Rather not build it?
Attachment Hippo handles the inbox-watching and Drive-saving automatically — no script to write or maintain.
Add to Gmail™ - it's free- Attachment Hippo — attachmenthippo.com
- Attachment Hippo pricing — attachmenthippo.com/pricing.html
- Attachment Hippo on Google Workspace Marketplace — workspace.google.com/marketplace
- Save Emails and Attachments, run workflow docs — digitalinspiration.com
- Zapier free plan and Zap limits — zapier.com/pricing
- Google Apps Script quotas — developers.google.com/apps-script/guides/services/quotas
- Gmail API search query reference — developers.google.com/gmail/api
- n8n: Auto-save Gmail attachments to Drive workflow — n8n.io