Weekly
Email the team a weekly metrics report from a sheet
Every Monday your team gets an email with last week's numbers from your sheet, the change from the week before, and a short summary.
- Runs
- Weekly
- Apps
- Google Sheets, SendGrid
- AI
- Optional
- Access
- sheet read; Mail Send
Send this to your assistant
Create a ClickRuntime automation: every Monday at 8, read the Weekly tab of my metrics sheet, compare last week with the week before, and email the team a short report through SendGrid.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
An operations lead keeps signups, revenue, churn and support volume in a shared sheet. Every Monday they copy the numbers into an email, work out the changes and write a few lines on what moved. It takes an hour and is the first thing dropped in a busy week.
The report now builds itself from the sheet: this week's numbers, the change from last week, and a short plain-English summary of what stood out, sent through SendGrid to everyone who needs it.
What you get out of it
Everyone starts the week with the same numbers
A report in every inbox on Monday morning means meetings start from shared facts, not from who opened the sheet.
Changes worked out for you
Each metric shows its week-on-week change, so a drop in signups is visible at once.
A summary people actually read
A few sentences on what moved most is easier to take in than a table of figures.
No new dashboard to maintain
The sheet your team already updates stays the source, with no extra tool to learn.
How it works
What happens, step by step
Every Monday morning, ClickRuntime reads the last two weeks from your metrics sheet.
It works out the change for each number from the week before.
AI writes a short summary of what moved most, if you've turned that on.
The report is emailed to your team through SendGrid, once per week.
Before it runs live
- Connect your Google Sheets account and pick the spreadsheets it may use
- Connect SendGrid
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Run it at a different time, more or less often, or only on weekdays
- Change what the AI looks for, or how it writes the result
- Add another app, for example also send it to Slack
- Combine it with other Google Sheets and SendGrid steps into one automation
Under the hood
The code that runs this automation
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, http, ai, state
SHEET_ID = "your-spreadsheet-id"
TEAM = ["ops@acme.example", "founders@acme.example"]
@on_trigger
def run(event):
sheets = build("sheets", "v4", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False)
rows = sheets.spreadsheets().values().get(spreadsheetId=SHEET_ID, range="Weekly!A1:Z").execute()["values"]
header, prev, last = rows[0], rows[-2], rows[-1]
if state.get("last_week") == last[0]:
return {"skipped": "already sent"}
lines = []
for name, a, b in zip(header[1:], prev[1:], last[1:]):
change = (float(b) - float(a)) / float(a) * 100 if float(a) else 0
lines.append(f"{name}: {b} ({change:+.0f}%)")
summary = ai.generate("Summarise in 3 sentences what changed most:\n" + "\n".join(lines), max_output_tokens=150).text
http.post("https://api.sendgrid.com/v3/mail/send", headers={"Authorization": f"Bearer {credentials.secret('SENDGRID_API_KEY')}"},
json={"from": {"email": "reports@acme.example"}, "subject": f"Weekly metrics, week of {last[0]}",
"personalizations": [{"to": [{"email": e} for e in TEAM]}],
"content": [{"type": "text/plain", "value": summary + "\n\n" + "\n".join(lines)}]})
state.set("last_week", last[0])
return {"metrics": len(lines)}FAQ
Common questions
What does the sheet need to look like?
Who receives the email?
Can it highlight big changes?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Send a personalised email sequence to leads in a sheet
Each lead in your sheet gets a short, personal sequence of emails through SendGrid, and the sheet shows who is at which step.
See how it worksSend your newsletter to everyone in a subscriber sheet
AI drafts your newsletter, you approve it, and it goes to every subscriber in your sheet through SendGrid, with each send logged.
See how it worksScreen applicants in a sheet and email each one
Every new applicant in your sheet is scored against the job, the score is written back, and they get the right email.
See how it worksKeep exploring
Set up “Email the team a weekly metrics report from a sheet” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.