

How to Create Weekly Salesforce Reports in Google Sheets with Zapier
Automatically run SOQL queries for closed-won deals and append summaries to a Google Sheet every Friday.
Steps and UI details are based on platform versions at time of writing β check each platform for the latest interface.
Best for
Sales teams that need consistent weekly reports without manual Salesforce exports.
Not ideal for
Teams that need real-time deal notifications or complex data transformations.
Sync type
scheduledUse case type
exportReal-World Example
A 12-person B2B software sales team uses this to track weekly performance in their Monday morning standup. Before automation, the sales ops person spent 15 minutes every Friday manually exporting Salesforce data and formatting it for review. Now the Google Sheet updates automatically and the team can see closed deals, revenue totals, and account names without touching Salesforce.
What Will This Cost?
Drag the slider to your expected monthly volume.
Each platform counts differently β Zapier: 1 task per trigger. Make: 1 operation per module per record. n8n: 1 execution per run.





Prices shown for annual billing. Based on published pricing as of April 2026.
Estimated ROI
1000
min saved/mo
$583
labor value/mo
Free
no platform cost
Based on ~2 min manual effort per operation at $35/hr fully loaded labor cost.
Implementation
Before You Start
Make sure you have everything ready.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Deal Name | Name | |
| Deal Value | Amount | |
| Close Date | CloseDate | |
| Account Name | Account.Name | |
2 optional fieldsβΈ show
| Deal ID | Id |
| Stage | StageName |
Step-by-Step Setup
Dashboard > Create Zap > Trigger
Create a new Zap
Start with a new Zap using Schedule by Zapier as your trigger. This will fire your SOQL query every Friday at a consistent time.
- 1Click 'Create Zap' from your Zapier dashboard
- 2Search for 'Schedule by Zapier' in the trigger app selector
- 3Select 'Every Week' as your trigger event
Trigger > Schedule Setup
Set weekly schedule
Configure the schedule to run every Friday. Set a specific time when your team expects the report to be ready.
- 1Select 'Friday' from the Day of Week dropdown
- 2Choose your preferred time (recommend 8:00 AM in your timezone)
- 3Select your timezone from the dropdown list
Trigger > Test
Test the schedule trigger
Zapier needs to verify the schedule works before proceeding. This creates a sample trigger event you'll use in later steps.
- 1Click 'Test trigger' at the bottom of the setup panel
- 2Wait for the green checkmark confirmation
- 3Click 'Continue' to move to the action step
Action > App Selection
Add Salesforce action
Add Salesforce as your first action step. You'll use the 'Find Records' action to run your SOQL query for closed-won deals.
- 1Click the + button to add an action step
- 2Search for 'Salesforce' in the app selector
- 3Choose 'Find Records' as your action event
Action > Account
Connect your Salesforce account
Authenticate with Salesforce using OAuth. Zapier needs read permissions to query your opportunity data.
- 1Click 'Sign in to Salesforce' in the account connection panel
- 2Enter your Salesforce credentials in the popup window
- 3Click 'Allow' to grant Zapier read permissions
Action > Find Records Setup
Configure the SOQL query
Set up your query to find closed-won opportunities from the past week. Use Salesforce's SOQL syntax to filter by stage and close date.
- 1Select 'Opportunity' from the Object dropdown
- 2In the Search Method field, choose 'SOQL Query'
- 3Paste this query: SELECT Id, Name, Amount, CloseDate, Account.Name FROM Opportunity WHERE StageName = 'Closed Won' AND CloseDate = THIS_WEEK
Action > Test
Test Salesforce query
Run the query to verify it returns your closed-won deals. This also provides sample data for mapping to Google Sheets.
- 1Click 'Test action' at the bottom of the Salesforce setup
- 2Wait for the query to execute (usually 5-10 seconds)
- 3Review the returned opportunity records
Action 2 > App Selection
Add Google Sheets action
Add Google Sheets as your second action to append the query results. You'll create a new row for each deal found.
- 1Click the + button to add another action step
- 2Search for 'Google Sheets' in the app selector
- 3Choose 'Create Spreadsheet Row' as your action event
Action 2 > Account
Connect Google Sheets
Authenticate with Google and grant Zapier permission to write to your spreadsheets. Make sure you use the right Google account.
- 1Click 'Sign in to Google Sheets' in the account panel
- 2Select your Google account from the list
- 3Click 'Allow' to grant spreadsheet write permissions
Action 2 > Spreadsheet Setup
Select your spreadsheet
Choose the specific spreadsheet and worksheet where you want the weekly sales data appended. Create the spreadsheet first if it doesn't exist.
- 1Select your target spreadsheet from the Spreadsheet dropdown
- 2Choose the correct worksheet tab from the Worksheet dropdown
- 3Verify the sheet has header rows matching your data fields
Action 2 > Field Mapping
Map Salesforce fields to sheet columns
Connect each piece of opportunity data to the correct spreadsheet column. Use the data from your Salesforce test to populate the mapping.
- 1Map 'Name' from Salesforce to your 'Deal Name' column
- 2Map 'Amount' to your 'Deal Value' column
- 3Map 'CloseDate' to your 'Close Date' column
- 4Map 'Account Name' to your 'Account' column
Action 2 > Test > Publish
Test the complete workflow
Run the full Zap to verify it queries Salesforce and writes data to your sheet correctly. This confirms your field mapping and permissions work.
- 1Click 'Test action' in the Google Sheets step
- 2Wait for the test to complete successfully
- 3Check your Google Sheet to verify the new row was added
- 4Click 'Turn on Zap' to activate the weekly automation
Drop this into a Zapier Code step.
Copy this templateSELECT Id, Name, Amount, CloseDate, Account.Name, Owner.Name FROM Opportunity WHERE StageName = 'Closed Won' AND CloseDate = THIS_WEEK ORDER BY Amount DESC LIMIT 50βΈ Show code
SELECT Id, Name, Amount, CloseDate, Account.Name, Owner.Name FROM Opportunity WHERE StageName = 'Closed Won' AND CloseDate = THIS_WEEK ORDER BY Amount DESC LIMIT 50
... expand to see full code
SELECT Id, Name, Amount, CloseDate, Account.Name, Owner.Name FROM Opportunity WHERE StageName = 'Closed Won' AND CloseDate = THIS_WEEK ORDER BY Amount DESC LIMIT 50
Scaling Beyond 15+ deals per week+ Records
If your volume exceeds 15+ deals per week records, apply these adjustments.
Add query pagination
Use OFFSET in your SOQL query if you regularly exceed 100 deals per week. Zapier's Find Records action caps at 2000 results but performs better with smaller batches.
Split into daily runs
Change from weekly to daily schedule and use CloseDate = TODAY instead. This spreads the API calls across the week and reduces the chance of hitting Google Sheets rate limits.
Going live
Production Checklist
Before you turn this on for real, confirm each item.
Troubleshooting
Common errors and how to fix them.
Frequently Asked Questions
Common questions about this workflow.
Analysis
Use Zapier for this if your team wants a hands-off weekly report without writing code. Setup takes 20 minutes and runs reliably every Friday at the same time. The visual interface makes it easy to modify the SOQL query or add new spreadsheet columns later. Skip Zapier if you need real-time updates - this automation only runs weekly, not when deals actually close.
This workflow uses 2 tasks per run - one for the schedule trigger, one for each spreadsheet row created. If you typically close 10 deals per week, that's 22 tasks monthly (2 + 10 deals Γ 2 tasks). That fits Zapier's free plan at 100 tasks/month. Make would cost $9/month for the same volume since they count each Salesforce record as a separate operation. Zapier wins on cost until you hit 50+ deals per week.
Make handles SOQL queries better with native pagination and can process 1000+ records in a single run. N8n lets you write custom JavaScript to format the data exactly how you want before hitting Google Sheets. But Zapier's Schedule trigger is rock-solid reliable - it fires every Friday without fail. Make's cron triggers occasionally skip runs during high traffic periods, and N8n requires manual cron setup that can break during server restarts.
Google Sheets API has a 100 requests per 100 seconds rate limit. If your query returns 20+ deals, Zapier will hit this limit and some rows will fail to write. The Schedule trigger also fires at the exact same minute for all users, creating API bottlenecks on Friday mornings. Salesforce's THIS_WEEK filter runs from Sunday to Saturday, not Monday to Friday like most sales teams expect - adjust your date logic accordingly.
Ideas for what to build next
- βAdd Slack notifications β Create a second Zap that posts a summary message to your #sales channel when the weekly report finishes running.
- βInclude pipeline data β Extend the workflow to also query open opportunities and add them to a second sheet tab for pipeline visibility.
- βFormat currency values β Add a Formatter action to convert Salesforce amounts to properly formatted currency before writing to Google Sheets.
Related guides
How to Share Notion Meeting Notes to Slack with Pipedream
~15 min setup
How to Share Notion Meeting Notes to Slack with Power Automate
~15 min setup
How to Share Notion Meeting Notes to Slack with n8n
~20 min setup
How to Send Notion Meeting Notes to Slack with Zapier
~8 min setup
How to Share Notion Meeting Notes to Slack with Make
~12 min setup
How to Create Notion Tasks from Slack with Pipedream
~15 min setup