Weekly
Share a weekly report file in Slack
Every week a fresh spreadsheet lands in the channel, ready to open, with nobody having to build it.
- Runs
- Weekly
- Apps
- Slack
- AI
- Not needed
- Access
- channels:history, files:write
Send this to your assistant
Create a ClickRuntime automation: every Monday morning, make a CSV of how many messages each person posted in #support last week and upload it to #leads.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A team lead wants to know who is actually using the channel. Someone exports messages, counts them per person in a spreadsheet and drags the file into Slack, and it takes twenty minutes the first time, and then it stops because the next week is busy. Community managers, department heads and workspace admins who rely on activity numbers end up with a few reports from months ago and nothing recent, so decisions about channels are made on impressions.
Every week, ClickRuntime counts the messages in a channel per user, builds a CSV with names and totals, and uploads that file straight into the channel you pick through Slack's file upload. The file appears as an ordinary attachment that people can open in Excel or Sheets, search for later or download.
The same pattern fits any small report you want dropped into a channel on a schedule, not only message counts.
What you get out of it
Participation is measured, not guessed
A weekly count of messages per person shows who is carrying a channel and who has gone quiet, so a manager can talk to the right people with numbers in hand.
The file lives where the team works
Uploading the CSV into the channel means no one needs a shared drive link or an email attachment. People open it from the same place they would discuss it, with comments in the thread. Replies and questions about the numbers stay attached to the file for later.
Weeks stack into a history
Each upload is dated and stays in the channel. Scrolling back shows whether activity grew after a change, such as a new onboarding process or a reorganization of channels. No archive folder needs to be maintained by anyone at all.
Reports no longer depend on one person
The weekly chore no longer waits for whoever remembers to run it. If the usual owner is away, the file still appears on schedule and the numbers stay comparable. Vacations and busy weeks stop creating gaps in the data.
Spreadsheets are ready to use
A CSV opens directly in Excel or Google Sheets, so analysts can sort, chart or merge it with other data without retyping anything from a screenshot or a message. That saves a surprising amount of cleanup time every single month.
How it works
What happens, step by step
Once a week ClickRuntime reads the past seven days of messages in your support channel.
It counts how many messages each person sent.
The counts are saved as a spreadsheet file, busiest person first.
The file is uploaded to your team leads' Slack channel with a one-line note.
Before it runs live
- Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)
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
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Google Sheets
- Combine it with other Slack steps into one automation
Under the hood
The code that runs this automation
import csv, io, time
from collections import Counter
from slack_sdk import WebClient
from clickruntime import on_trigger, credentials
SUPPORT, LEADS = "C01SUPPORT", "C03LEADS00"
@on_trigger
def run(event):
slack = WebClient(token=credentials.connection("slack", "work"))
msgs = slack.conversations_history(channel=SUPPORT, oldest=str(time.time() - 7 * 86400), limit=1000)["messages"]
counts = Counter(m["user"] for m in msgs if m.get("user"))
buf = io.StringIO()
writer = csv.writer(buf)
writer.writerow(["person", "messages"])
for uid, n in counts.most_common():
writer.writerow([slack.users_info(user=uid)["user"]["real_name"], n])
# files_upload_v2 uses files.getUploadURLExternal + files.completeUploadExternal
slack.files_upload_v2(channel=LEADS, filename="support-messages-last-week.csv",
content=buf.getvalue(), initial_comment="Messages per person in #support last week")
return {"people": len(counts)}FAQ
Common questions
What columns does the CSV contain?
Can it upload a file other than message counts?
Which channel can the file be posted in?
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
Know the moment your website goes down
Your team hears in Slack when the site stops responding or slows down, and again when it's back.
See how it worksPost a morning briefing to Slack
Your team starts the day with the weather, a reminder or anything else you'd like in #general.
See how it worksFind Slack channels nobody uses anymore
Once a month you get a list of channels that have gone quiet, so you can archive them.
See how it worksKeep exploring
Set up “Share a weekly report file in Slack” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.