Skip to content

Weekly

Send a weekly Telegram message to every chat in a sheet

Write your announcement once in a sheet and every Telegram chat on your list gets it on Monday morning, with each one marked as sent.

Runs
Weekly
Apps
Google Sheets, Telegram
AI
Not needed
Access
Telegram bot token; Sheets read+write

Send this to your assistant

Create a ClickRuntime automation: every Monday at 10am, send the message in my Broadcast sheet to every chat ID listed there through my Telegram bot, and mark each row as sent.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A community organiser runs a Telegram bot for a running club with a few hundred members and several group chats. Every week there is a route, a meeting point and sometimes a change of time. Copying the same message into each chat by hand takes most of an hour, and someone always gets missed or gets it twice.

With the message and the list of chats kept in one sheet, the weekly announcement goes out on its own at the same time each week. Clubs, course providers, small shops with a customer bot and teams with several group chats use it to keep everyone told without a copy-and-paste session.

What you get out of it

  • One place to write the message

    You edit a single cell in the sheet and that text reaches every chat. There is no risk of one group getting an older version because you forgot to update it.

  • Nobody is skipped or sent it twice

    Each row is marked as sent once its message goes out. If a send fails, that row stays unmarked, so you can see exactly who did not get it.

  • Sends at a pace Telegram accepts

    Messages are spaced out instead of fired all at once. That keeps a large list from being cut off part way through by Telegram's sending limits.

  • The list is easy to manage

    Adding or removing a chat is a matter of adding or deleting a row. Anyone on the team who can edit the sheet can maintain the audience without touching the bot.

  • A regular slot people expect

    Members learn that the update arrives every Monday at 10am. A predictable time makes the message more likely to be read and acted on.

How it works

What happens, step by step

  1. Every Monday at 10am, ClickRuntime reads the announcement from the Broadcast sheet and the list of chats below it.

  2. It skips any chat already marked as sent for this week's message.

  3. Your Telegram bot sends the announcement to each chat, a few at a time, so Telegram does not block the sends.

  4. Each row is marked as sent with the date, or with an error if that chat could not be reached.

Before it runs live

  • Connect your Google Sheets account and pick the spreadsheets it may use
  • Connect Telegram

What you get

RunsWeekly
Send a weekly Telegram message to every chat in a sheettoday, 9:00Succeeded
Telegram · Northwind RunnersThis Saturday: 10 km river loop, meet at the Acme Park gate at 8:00. Coffee afterwards at Contoso Café.

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • 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 Slack
  • Combine it with other Google Sheets and Telegram steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
broadcast_messages_to_chats_listed_in_a_sheet.pyexample
import time
from datetime import date
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, http

SHEET_ID = "your-spreadsheet-id"

@on_trigger
def run(event):
    token = credentials.secret("TELEGRAM_BOT_TOKEN")
    values = build("sheets", "v4", credentials=Credentials(credentials.connection("google", "work")),
                   cache_discovery=False).spreadsheets().values()
    message = values.get(spreadsheetId=SHEET_ID, range="Broadcast!B1").execute()["values"][0][0]
    rows = values.get(spreadsheetId=SHEET_ID, range="Broadcast!A3:B").execute().get("values", [])
    today, sent, statuses = date.today().isoformat(), 0, []
    for i, row in enumerate(rows):
        status = row[1] if len(row) > 1 else ""
        if row and not status.startswith("sent"):
            r = http.post(f"https://api.telegram.org/bot{token}/sendMessage", json={"chat_id": row[0], "text": message})
            status = f"sent {today}" if r.ok else f"error {r.status_code}"
            sent += r.ok
            if i % 20 == 19:
                time.sleep(1)
        statuses.append([status])
    values.update(spreadsheetId=SHEET_ID, range="Broadcast!B3", valueInputOption="RAW", body={"values": statuses}).execute()
    return {"chats": len(rows), "sent": sent}

FAQ

Common questions

Why does a chat not receive the message?
Telegram only lets a bot message people who have started a conversation with it, or groups it has been added to. If a person has never pressed Start or has blocked the bot, their row will show an error instead of being marked as sent.
Where do I find a chat ID?
The easiest way is to have the person or group send a message to your bot and read the ID from that message. Group IDs usually start with a minus sign, and both kinds go in the same column of the sheet.
Can I send to only part of the list?
Yes. Add a column such as Group or Active and only rows matching it are sent to. This lets you keep one sheet for several audiences and choose who gets each week's message.
What permissions does it need?
Telegram bot token; Sheets read+write. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run each time it runs (weekly). Checks that find nothing to do and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Send a weekly Telegram message to every chat in a sheet” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.