Automation guide

How to Automatically Send a Weekly Business Report from Google Sheets

Turn one spreadsheet into a useful Monday email with revenue, customer, task, and overdue-work numbers. Your report arrives automatically before the week gets busy.

Weekly business report dashboard with key numbers, charts, and overdue work

Stop rebuilding the same report every Friday

Many businesses already have the numbers they need in Google Sheets. The problem is that someone still has to open the file, find the newest totals, write an email, and send it to the team.

That work feels small until it happens every week. If one report takes 90 minutes, it consumes nearly 78 hours every year. That is almost two full workweeks spent assembling information instead of using it.

What you'll build

One spreadsheet that sends its own weekly summary

  • A Monday email with the numbers that matter
  • Revenue, customers, open work, and overdue items
  • A direct link to the full spreadsheet
  • An automatic schedule that runs without opening the file
  • A reusable starting point for more advanced reporting

The finished flow

Team updates Google SheetsReport numbers updateMonday trigger runsSummary arrives by email

Your team keeps using the spreadsheet. The owner gets a cleaner summary without asking anyone to build it again.

What the email can look like

Revenue$18,420+12% from last week
New customers143 more than last week
Open tasks276 overdue
At-risk accounts3Needs attention

What you need

  • A Google account
  • One Google Sheet with the report numbers
  • The email address that should receive the summary
  • About 30 minutes for the first setup

You do not need a server or a separate email tool. Google Apps Script is a small automation tool built into Google Sheets.

Set up the weekly report

1. Create a Weekly Report sheet

5 minutes

Add a new tab and name it Weekly Report. Put the metric names in column A and their newest values in column B.

MetricValue
Revenue$18,420
New Customers14
Open Tasks27
Overdue Tasks6
At-Risk Accounts3

These values can be typed in, calculated with formulas, or pulled from other tabs. Start with five numbers. More is not always better.

2. Open Apps Script

2 minutes

In Google Sheets, choose Extensions, then Apps Script. A new editor opens in another tab. Delete the sample function so the file is empty.

3. Add the email script

10 minutes

Paste the code below into the editor. Replace owner@yourbusiness.com with the address that should receive the report.

function sendWeeklyBusinessReport() {
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = spreadsheet.getSheetByName("Weekly Report");

  if (!sheet) {
    throw new Error('Create a sheet named "Weekly Report" first.');
  }

  const recipient = "owner@yourbusiness.com";
  const rows = sheet.getRange("A2:B6").getDisplayValues();
  const reportDate = Utilities.formatDate(
    new Date(),
    Session.getScriptTimeZone(),
    "MMM d, yyyy",
  );

  const textRows = rows
    .filter(function (row) { return row[0]; })
    .map(function (row) { return row[0] + ": " + row[1]; })
    .join("\n");

  const htmlRows = rows
    .filter(function (row) { return row[0]; })
    .map(function (row) {
      return "<li><strong>" + row[0] + ":</strong> " + row[1] + "</li>";
    })
    .join("");

  MailApp.sendEmail({
    to: recipient,
    subject: "Weekly Business Report - " + reportDate,
    body: "Here is your weekly business report:\n\n" + textRows +
      "\n\nOpen the full sheet: " + spreadsheet.getUrl(),
    htmlBody: "<h2>Weekly Business Report</h2><ul>" + htmlRows +
      "</ul><p><a href='" + spreadsheet.getUrl() +
      "'>Open the full report</a></p>",
  });
}

4. Send a test email

5 minutes

Click Run and choose the sendWeeklyBusinessReport function. Google will ask you to approve permission because the script reads the sheet and sends an email from your account.

Check the email before adding the schedule. Fix the address, labels, or cell range now while the setup is easy to test.

5. Schedule it for Monday morning

5 minutes

In Apps Script, open Triggers and choose Add Trigger. Select the report function, choose a time-driven trigger, select Week timer, Monday, and the morning hour you prefer.

Google runs recurring triggers sometime within the selected hour, so an 8 a.m. setting may arrive a few minutes after 8. Google's official guide explains how to manage scheduled Apps Script triggers.

6. Keep the source numbers current

Ongoing

The email can only report what is in the sheet. Use formulas or connected data where possible. If part of the sheet still needs a manual update, give one person a clear deadline before the email runs.

The measurable payoff

Get almost two workweeks back each year

Before90 minutes every week
AfterA five-minute review

Removing 85 minutes of weekly report work saves about 74 hours a year. More importantly, the report arrives consistently even when the person who normally builds it is busy.

Use this for internal reporting

This setup works well for sending a report to an owner and a small leadership team. It is not meant for emailing thousands of customers. Apps Script has daily recipient limits that vary by account type.

For current limits, review Google's Apps Script quota documentation. Use a newsletter service when the audience becomes a mailing list.

What to automate next

Once the weekly email works, the next step is connecting the source systems so nobody has to update the report tab manually.

  • Import Stripe revenue and subscription numbers
  • Pull open invoices from your accounting software
  • Count registrations or new leads automatically
  • Highlight overdue tasks and at-risk customers
  • Send different summaries to owners and department leads
  • Store each weekly snapshot for long-term trends

Troubleshooting

The email did not arrive

Check the recipient address, spam folder, and the Executions page in Apps Script. The execution log will show whether the script ran or failed.

The email has the wrong numbers

Confirm the sheet is named Weekly Report and that the report values are in cells A2 through B6. Change the range in the script if your report uses different cells.

The report arrived at the wrong time

Check the Apps Script project time zone and the trigger settings. Google schedules recurring triggers within the selected hour, not at an exact minute.

The report was sent twice

Open Triggers and remove the duplicate schedule. You only need one weekly trigger for the sendWeeklyBusinessReport function.

You need to email a large list

Use this setup for a small internal reporting group. Apps Script has daily recipient limits and is not a replacement for a newsletter platform.

Want the report built for you?

Turn your weekly reporting work into one automatic summary

Ravert Systems can map the report you build today, connect the software holding each number, create the dashboard, and send the right summary to your team every week.

  • Map the report your team builds today
  • Identify numbers that can update automatically
  • Find the manual steps consuming the most time
  • Receive a practical plan for improving the workflow
Automate My Weekly Report