Google Sheets to Google Drive, proposals ready fast
Your lead list is “organized” until someone asks for the latest proposal, a one-pager, and a quick follow-up note. Then it’s copy-paste chaos, half-finished drafts, and files saved in three different places.
Sheets Drive automation hits hardest when marketing ops is keeping a pipeline moving, but agency owners and sales coordinators feel the same strain. The outcome is simple: booked rows in your sheet turn into polished, stored collateral (with links), plus a Gmail summary you can forward.
This workflow batches the whole job in one run. You will see what it creates, where it stores everything in Google Drive, and how it updates your CRM-style Google Sheet so nothing gets lost later.
How This Automation Works
See how this solves the problem:
n8n Workflow Template: Google Sheets to Google Drive, proposals ready fast
flowchart LR
subgraph sg0["When clicking ‘Execute workflow’ Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Execute workf..", pos: "b", h: 48 }
n1@{ icon: "mdi:database", form: "rounded", label: "Retrieve Lead Records from G..", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Validate Lead Data Payload", pos: "b", h: 48 }
n3@{ icon: "mdi:database", form: "rounded", label: "Log Invalid Leads to Google ..", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter for Booked Leads", pos: "b", h: 48 }
n5@{ icon: "mdi:brain", form: "rounded", label: "Configure GPT-4o Model", pos: "b", h: 48 }
n6@{ icon: "mdi:brain", form: "rounded", label: "Configure GPT-4o Model1", pos: "b", h: 48 }
n7@{ icon: "mdi:robot", form: "rounded", label: "Generate Sales Collateral (AI)", pos: "b", h: 48 }
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Parse AI JSON Output"]
n9["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Convert Collateral into Text.."]
n10@{ icon: "mdi:cog", form: "rounded", label: "Upload Sales Collateral to G..", pos: "b", h: 48 }
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Map Uploaded Files with Lead.."]
n12@{ icon: "mdi:database", form: "rounded", label: "Update Lead Record with Prop..", pos: "b", h: 48 }
n13@{ icon: "mdi:robot", form: "rounded", label: "Generate Sales Summary Email", pos: "b", h: 48 }
n14@{ icon: "mdi:message-outline", form: "rounded", label: "Send Sales Summary Email via..", pos: "b", h: 48 }
n15["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Aggregate Uploaded File Meta.."]
n8 --> n9
n5 -.-> n7
n6 -.-> n13
n4 --> n7
n2 --> n4
n2 --> n3
n13 --> n14
n7 --> n8
n15 --> n13
n11 --> n12
n9 --> n10
n0 --> n1
n10 --> n15
n10 --> n11
n1 --> n2
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n7,n13 ai
class n5,n6 aiModel
class n2,n4 decision
class n1,n3,n12 database
class n8,n9,n11,n15 code
classDef customIcon fill:none,stroke:none
class n8,n9,n11,n15 customIcon
The Challenge: Proposal Collateral Takes Too Long
If you use Google Sheets as a lightweight CRM, “BOOKED” should mean momentum. Instead, it often means a scramble. You find the row, double-check the contact email, open an old proposal template, rewrite the same scope section again, then paste snippets into a follow-up email. After that, someone asks where the file lives, and you realize it’s sitting on a personal Drive (or worse, nowhere). The worst part is the mental load. You’re trying to sound sharp and tailored while doing repetitive admin work.
It adds up fast. Here’s where it breaks down in real life.
- Booked leads sit idle because writing “just one proposal” turns into an hour of context switching.
- Manual drafting makes tone inconsistent, so follow-ups feel random instead of on-brand.
- Files get uploaded without a clear naming pattern, which makes Drive search feel like roulette.
- The sheet never gets updated with links, so your team re-creates work you already did.
The Fix: Generate, Store, and Report Collateral Automatically
This workflow takes the lead data you already maintain in Google Sheets and turns it into ready-to-use sales collateral for only the leads marked as BOOKED. You run it manually when you want a batch processed (daily, a few times a week, or right after a sales push). It validates each row first, so malformed emails don’t quietly poison the run. For every booked lead, GPT-4o generates three assets: a short sales summary, a one-pager, and a proposal draft. Those outputs are cleaned into structured JSON, compiled into a readable text report, uploaded into a dedicated Google Drive folder, and then written back to your Sheet as a proposal link for traceability. Finally, it sends a Gmail summary containing a neat HTML list of every file it created, plus a short “what happened” insights paragraph.
The workflow begins with a pull from your outreach sheet. Then it filters and generates collateral with GPT-4o, uploads reports to Google Drive, and updates the original rows with links. Gmail delivers the wrap-up so you can forward it to leadership without touching formatting.
What Changes: Before vs. After
| What This Eliminates | Impact You’ll See |
|---|---|
|
|
Real-World Impact
Say you book 10 leads in a week. Manually, you might spend about 10 minutes on a follow-up note, 20 minutes on a one-pager, and 30 minutes shaping a proposal draft per lead (plus another 5 minutes saving and linking), which is roughly 1 hour each. That’s about 10 hours weekly. With this workflow, you kick off a batch run in a couple minutes, wait for generation and Drive uploads, then review and tweak only the ones that need it. For many teams, the “writing from scratch” time drops to quick editing, which feels very different.
Requirements
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets as your lead source and tracker.
- Google Drive to store and share generated reports.
- Gmail to send the HTML summary email.
- Azure OpenAI (GPT-4o) credentials (get it from your Azure OpenAI resource in Azure Portal).
Skill level: Intermediate. You’ll connect Google + Azure accounts and paste credentials, but you won’t be writing real code unless you want deeper customization.
Need help implementing this? Talk to an automation expert (free 15-minute consultation).
The Workflow Flow
Manual run to process a batch. You click Execute Workflow, which is useful when you want control over timing (for example, right after your “booked” statuses are updated).
Pull and validate lead rows from Google Sheets. It fetches the latest rows from your outreach sheet, checks that each record has a valid email format, and logs bad rows into a separate sheet tab so you can clean them later.
Generate collateral only for BOOKED leads. An If filter isolates booked rows, then GPT-4o writes a structured sales summary, a one-pager, and a proposal draft using the lead details (company, role, industry, and whatever else you track).
Upload to Google Drive and push links back into the Sheet. The workflow compiles each lead’s content into a text report, uploads it to your Drive folder, and updates the original row with a proposal link so your sheet becomes the source of truth.
Send a Gmail recap with clickable links. It aggregates the uploaded file metadata into a clean HTML email and sends it to your marketing inbox as a single “here’s what was created” summary.
You can easily modify the collateral format to match your templates based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Manual Trigger
Set up the workflow to start on demand so you can test and run the sales collateral generation manually.
- Add Manual Run Trigger as the starting node.
- Leave all settings at their default values to enable manual executions.
- Connect Manual Run Trigger to Fetch Lead Rows from Sheets.
Step 2: Connect Google Sheets for Lead Intake and Validation
Pull lead data, validate email quality, and log invalid leads to a separate sheet.
- Open Fetch Lead Rows from Sheets and select your spreadsheet.
- Set documentId to
[YOUR_ID]and sheetName tooutreach automation. - Credential Required: Connect your googleSheetsOAuth2Api credentials in Fetch Lead Rows from Sheets.
- In Validate Lead Payload, keep the email regex condition:
/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test({{ $json.Email }}). - Connect the false output of Validate Lead Payload to Append Invalid Leads to Sheet.
- In Append Invalid Leads to Sheet, set Operation to
append. - Credential Required: Connect your googleSheetsOAuth2Api credentials in Append Invalid Leads to Sheet.
Step 3: Filter Booked Leads and Configure AI Generation
Filter to only booked leads, then generate sales collateral using Azure OpenAI models connected to agent nodes.
- In Select Booked Leads, set the condition to Booking Status equals
BOOKEDusing{{ $json["Booking Status"] }}. - Open Azure GPT-4o Setup and set Model to
gpt-4o. - Credential Required: Connect your azureOpenAiApi credentials in Azure GPT-4o Setup.
- Open Create Sales Collateral AI and keep the full prompt in text as provided, including lead fields like
{{ $json["Company Name"] }}and{{ $json["Contact Person"] }}. - Ensure Azure GPT-4o Setup is connected as the language model for Create Sales Collateral AI (credentials are added to Azure GPT-4o Setup, not the agent node).
Step 4: Parse AI Output and Build Report Files
Clean and parse the AI JSON output, then generate text report files for each lead.
- In Parse AI JSON Result, keep the JavaScript that cleans and parses JSON from
item.json.output. - In Build Text Reports, keep the code that assembles the report and creates binary data using
Buffer.from(report, "utf8"). - Confirm the generated file name is
Lead_Report_{{index + 1}}.txtin the fileName field.
Step 5: Upload Reports and Process Parallel Branches
Upload the generated reports to Drive, then split into two parallel branches for summary and sheet updates.
- In Upload Reports to Drive, set Name to
{{$json["fileName"]}}. - Set driveId to
My Driveand folderId to[YOUR_ID](e.g.,collatral data). - Credential Required: Connect your googleDriveOAuth2Api credentials in Upload Reports to Drive.
- Upload Reports to Drive outputs to both Compile Uploaded File List and Match Files to Leads in parallel.
- In Match Files to Leads, keep the reference to booked leads with
$('Select Booked Leads').all()to align files with lead rows by index.
Step 6: Update Google Sheets with Proposal Links
Write the uploaded file URLs back to the lead sheet using email as the matching key.
- Open Update Sheet with Proposal Link and set Operation to
appendOrUpdate. - Confirm the mapping uses Email with
{{ $json.Email }}and Proposal Link with{{ $json.ProposalLink }}. - Set documentId to
[YOUR_ID]and sheetName tooutreach automation. - Credential Required: Connect your googleSheetsOAuth2Api credentials in Update Sheet with Proposal Link.
Step 7: Generate and Send the Summary Email
Create a HTML summary of uploaded files and send it via Gmail.
- In Compile Uploaded File List, keep the logic that builds
fileListTextandtotalLeads. - Open Azure GPT-4o Setup B and set Model to
gpt-4o. - Credential Required: Connect your azureOpenAiApi credentials in Azure GPT-4o Setup B.
- In Draft Summary Email HTML, keep the prompt that uses
{{ $json["totalLeads"] || "0" }}and{{ $json["fileListText"] || "No uploaded file data available" }}. - Ensure Azure GPT-4o Setup B is connected as the language model for Draft Summary Email HTML (credentials are added to Azure GPT-4o Setup B, not the agent node).
- In Send Summary Email Gmail, set sendTo to
[YOUR_EMAIL], subject toSales Collateral Summary, and message to{{ $json.output }}. - Credential Required: Connect your gmailOAuth2 credentials in Send Summary Email Gmail.
{{ $json.output }} from Draft Summary Email HTML. If the AI returns JSON or markdown, the email will look broken—keep the HTML-only instruction intact.Step 8: Test and Activate Your Workflow
Run a manual test to confirm files are created, uploaded, logged to Sheets, and emailed.
- Click Execute Workflow to run from Manual Run Trigger.
- Verify Upload Reports to Drive creates files in the specified Drive folder.
- Confirm Update Sheet with Proposal Link writes the Proposal Link for each matched email.
- Check your inbox to confirm Send Summary Email Gmail delivers the HTML summary.
- Once confirmed, toggle the workflow to Active for production use.
Watch Out For
- Google Sheets credentials can expire or need specific permissions. If things break, check the n8n credential status and the Google account’s access to the spreadsheet first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Azure OpenAI (GPT-4o) deployments are easy to misconfigure. If the AI nodes suddenly fail, confirm your Azure resource, deployment name, and quota limits before you touch the prompts.
Common Questions
About an hour if your Google and Azure accounts are already set up.
Yes, but you’ll want someone comfortable connecting OAuth accounts in n8n. No coding is required for the basic version, and the workflow already includes validation and logging.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Azure OpenAI usage, which depends on how long your prompts and outputs are.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
You can adjust what gets generated by editing the prompts in the “Create Sales Collateral AI” and “Draft Summary Email HTML” nodes. Common tweaks include adding your brand voice rules, forcing a specific proposal structure (like pricing tiers), and changing file naming so Drive matches your internal conventions. If you prefer Google Docs instead of .txt reports, swap the “Build Text Reports” and “Upload Reports to Drive” approach for a Docs creation step, then keep the same “Update Sheet with Proposal Link” idea.
Usually it’s expired Google OAuth credentials or the connected account lost access to the spreadsheet. Reconnect the Google Sheets credential in n8n, then confirm the sheet is still shared with that Google user. If it fails only on updates, check that the workflow is pointing at the right tab and that your columns haven’t been renamed.
On most setups, processing a few dozen booked leads in a single run is realistic, but AI generation time and API limits will be your bottleneck. n8n Cloud capacity depends on plan executions, while self-hosting has no execution cap (it depends on your server). If you’re doing big batches, run it more often with smaller groups so Gmail summaries and Drive uploads stay snappy.
Often, yes, because this workflow needs branching, data cleanup, and multi-step AI generation before it ever sends an email. n8n handles that kind of logic without turning every conditional into a paid add-on. Self-hosting is also a big deal if you want to run large batches without worrying about task pricing. Zapier or Make can still be fine for a simpler “new row → send email” setup. If you’re unsure, Talk to an automation expert and we’ll map it to your volume and process.
You get consistent collateral, stored cleanly in Drive, with the Sheet updated so nobody has to guess. Honestly, once it’s running, it feels like you hired a very fast assistant for the boring parts.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.