On a schedule
Get Telegram reminders for due dates in an Excel sheet
Every morning at 8am a Telegram message lists rows in an Excel sheet that are due today or overdue and not marked Done, with the owner and days late.
- Runs
- On a schedule
- Apps
- Microsoft Excel, Telegram
- AI
- Not needed
- Access
- Microsoft Files.Read; Telegram bot token
Send this to your assistant
Create a ClickRuntime automation: every day at 8am, read the Tasks sheet in tracker.xlsx on OneDrive and send me a Telegram message listing rows due today or overdue that aren't marked Done, with owner and how many days late.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Plenty of teams track deadlines in an Excel sheet: renewals, filings, client deliverables. The sheet is accurate, but nobody opens it every morning, so a due date passes without anyone noticing.
This reads the sheet from OneDrive each morning and sends a Telegram message with what is due today and what is already late. Rows marked Done are left out.
It suits small teams, office managers and freelancers who keep their to-do list in Excel and live in Telegram on their phones.
What you get out of it
Deadlines come to you
A message on your phone at 8am is harder to ignore than a sheet in a folder. Due dates stop slipping by unnoticed.
Overdue items first
Items are sorted by how late they are, so the most urgent sit at the top of the message.
Keep using your sheet
Nothing about how you edit the Excel file changes. Mark a row Done and it drops off tomorrow's list.
Owners named
Each line says who is responsible, which makes a group message useful for a quick check-in.
Quiet on clear days
If nothing is due, no message is sent, so every message is worth reading.
How it works
What happens, step by step
Every morning ClickRuntime reads your Excel sheet from OneDrive.
It looks at the Due date and Status column of each row.
Rows due today, and earlier rows not marked Done, are collected with their owner.
One Telegram message lists overdue items first, then today's. If nothing is due, no message is sent.
Before it runs live
- Connect Microsoft Excel
- Connect Telegram
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 Slack
- Combine it with other Microsoft Excel and Telegram steps into one automation
Under the hood
The code that runs this automation
from datetime import date, datetime, timedelta
from clickruntime import on_trigger, credentials, http
GRAPH = "https://graph.microsoft.com/v1.0"
TG = "https://api.telegram.org"
SHEET = "/me/drive/root:/Team/tracker.xlsx:/workbook/worksheets/Tasks/usedRange"
CHAT_ID = 123456789
def as_date(v):
if isinstance(v, (int, float)) and v > 0:
return date(1899, 12, 30) + timedelta(days=int(v)) # Excel serial date
try:
return datetime.fromisoformat(str(v)[:10]).date()
except ValueError:
return None
@on_trigger
def run(event):
h = {"Authorization": f"Bearer {credentials.connection('microsoft', 'work')}"}
rows = http.get(f"{GRAPH}{SHEET}", headers=h, params={"$select": "values"}).json()["values"]
head = [str(c).strip().lower() for c in rows[0]]
col = {k: head.index(k) for k in ("task", "owner", "due", "status") if k in head}
today, items = date.today(), []
for r in rows[1:]:
due = as_date(r[col["due"]])
if not due or due > today or str(r[col.get("status", 0)]).strip().lower() == "done":
continue
late = (today - due).days
owner = r[col["owner"]] if "owner" in col and r[col["owner"]] else "no owner"
items.append((late, f"{'🔴' if late else '🟡'} {r[col['task']]} ({owner}): " + (f"{late} day{'s' if late > 1 else ''} late" if late else "due today")))
if not items:
return {"due": 0}
text = f"📅 Due list for {today:%a %d %b}\n" + "\n".join(t for _, t in sorted(items, key=lambda x: -x[0]))
http.post(f"{TG}/bot{credentials.secret('TELEGRAM_BOT_TOKEN')}/sendMessage", json={"chat_id": CHAT_ID, "text": text[:4000]})
return {"due": len(items)}FAQ
Common questions
What columns does my sheet need?
Can it send to a team group instead of just me?
Does it work with dates typed as text?
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
Get a Telegram message when an Excel sheet changes
You hear on Telegram whenever rows are added, changed or removed in a shared Excel sheet.
See how it worksAdd rows to an Excel table from Telegram messages
Messages sent to your Telegram bot in a set format, such as "12.50 lunch with client", are added as dated rows to an Excel table in OneDrive, and the bot replies to confirm.
See how it worksLog receipts sent to Telegram in Excel
Send a photo or PDF of a receipt to your Telegram bot and the date, supplier and amount are added to your Excel expenses table.
See how it worksKeep exploring
Set up “Get Telegram reminders for due dates in an Excel sheet” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.