Home / Guides / Tool Guide

How to use Google Sheets to build a weekly report

Short answerBuild it once with a pivot table, not with hand-typed formulas you rewrite every Monday. Insert a pivot table off your jobs sheet, put the week in Rows and revenue in Values, and it recalculates itself every time the source data changes. If you want the report to arrive without you opening the file, add an Apps Script time trigger. The catch nobody mentions: Sheets' built-in notification settings only email you, not your crew, so anything you want a second person to see needs a real trigger or a shared link.

How to do it

1

Fix the source sheet first, because everything downstream breaks if you don't

One row per job. Columns for date, customer, job type, tech, invoiced amount, paid amount. Every column gets a header, and every column holds one kind of data. Google's own QUERY documentation says that when a column has mixed types, the majority type wins and the rest get treated as nulls. That is how a revenue column with a stray 'see notes' in it silently drops rows out of your total.

2

Add a week column

New column, =ISOWEEKNUM(A2) filled down, or =YEAR(A2)&"-W"&TEXT(ISOWEEKNUM(A2),"00") if your data crosses a January. Grouping on a raw date gives you 300 rows. Grouping on a week number gives you 52. Do this before the pivot table, not after.

3

Insert the pivot table

Select the data including headers, then Insert then Pivot table. In the side panel click Add next to Rows and pick your week column, then Add next to Values and pick invoiced amount summarized by SUM. Add job type to Columns if you want the split by service line. That is the whole report.

4

Let it refresh itself

Google's help page is explicit: the pivot table refreshes any time you change the source data cells it is drawn from. So do not rebuild it weekly. Point your source range at whole columns, A:F rather than A1:F400, and new rows land in the report the moment they are typed.

5

Add the two or three numbers that actually change behavior

Above the pivot, a small block of plain formulas: jobs closed this week, average ticket, dollars invoiced but not paid. Use a Calculated field inside the pivot if the number is a ratio of two columns you already have. Everything else is decoration. A weekly report nobody acts on is a chore, not a report.

6

Use QUERY when the pivot table can't say it

The syntax is QUERY(data, query, [headers]). Something like =QUERY(A:F,"select B, sum(E) where A is not null group by B order by sum(E) desc limit 10",1) gives you a top-ten customer list a pivot table makes awkward. QUERY is a formula, so it lives in a cell and updates like any other formula.

7

Make it show up on its own

Tools then Notification settings then Edit notifications gets you an email on changes or form submissions, either right away or as a daily digest. It only notifies you, and only about other people's edits, not yours. For a real Monday morning send, use Extensions then Apps Script, write a short function that emails the range, and add a time-driven trigger set to weekly on Monday.

Where this goes wrong

The parts most guides skip, and the ones that actually cost you money:

Free tools for service businesses

Quotes, invoice follow-ups and review requests. No signup.

Open the free tool

Common questions

Pivot table or QUERY?

Pivot table for anything you would describe as totals by category. QUERY when you need filtering, sorting and limits in one expression, or when the output has to feed another formula. Most weekly reports never need QUERY.

Can Google Sheets email the report as a PDF?

Not with a built-in setting. You need Apps Script: generate the PDF blob from the spreadsheet and send it with MailApp, then attach a weekly time-driven trigger. It is about 15 lines of code.

How far back should the weekly report look?

Show the last 8 to 13 weeks next to the current one. One week in isolation tells you nothing, because weather and holidays move service revenue more than anything you did.

Is this worth doing if we already use Jobber or Housecall Pro?

Only for numbers those tools do not report well, which is usually anything crossing two systems, like marketing spend against booked revenue. Do not rebuild reporting you already pay for.

Sources

  1. QUERY function — Google Docs Editors HelpSyntax is QUERY(data, query, [headers]); each column can hold only boolean, numeric or string values, and in a mixed column the majority data type wins while minority types are treated as nulls.
  2. Create and use pivot tables — Google Docs Editors HelpPivot tables are created from Insert then Pivot table with each column needing a header; the pivot table refreshes any time you change the source data cells it is drawn from; calculated fields are added from Add next to Values.
  3. Turn on notifications for changes — Google Docs Editors HelpTools then Notification settings then Edit notifications offers email right away or a daily digest for edits or form submissions; you can only set up notifications for yourself and you are not notified about your own changes.
  4. Installable triggers — Google Apps Script documentationTime-driven triggers run from every minute to once per month, are created with ScriptApp.newTrigger().timeBased(), and the fire time is slightly randomized so a 9 AM trigger runs between 9 and 10 AM.

Related guides

Want this built for you instead?

Tell us the job you keep doing by hand. If we can automate it, we will quote it. If we cannot, we will tell you that too. No calls, everything in writing.

Got it. We will reply to that address shortly with what it would take.
Nexus AI Solutions · Circleville, Ohio · Operational AI for service businesses · Free tools · All guides