A Google Apps Script that automatically sends your daily Google Calendar schedule to a Telegram chat. Perfect for staying organized and getting daily schedule reminders.
- 📅 Automatically fetches events from your Google Calendar
- 📱 Sends formatted daily schedule to Telegram
- ⏰ Configurable daily trigger timing
- 🎯 Clean, readable message formatting
- 📍 Shows event locations (when available)
- 🔧 Easy setup through Google Sheets interface
- Open Telegram and search for @BotFather
- Send
/newbotand follow the instructions - Choose a name and username for your bot
- Copy the Bot Token (you'll need this later)
- Start a chat with your new bot and send any message
- Send a message to your bot
- Visit:
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates - Look for the
"chat":{"id":field in the response - Copy the Chat ID (it's a number, could be negative)
- Open Google Calendar
- Click on the three dots next to your calendar name
- Select "Settings and sharing"
- Scroll down to "Calendar ID" and copy it
- It looks like:
your.email@gmail.comorrandomstring@group.calendar.google.com
- Create a new Google Sheets document
- Create a sheet named "Settings" (exactly as shown)
- Set up the configuration as shown in the example below:
| A | B | C |
|---|---|---|
| 1 | SheetSmarts Configuration | |
| 2 | ||
| 3 | Setting | Value |
| 4 | Bot Token | <YOUR_BOT_TOKEN> |
| 5 | Chat ID | <YOUR_CHAT_ID> |
| 6 | ||
| 7 | Calendar ID | <YOUR_CALENDAR_ID> |
| 8 | ||
| 9 | Daily Send Time | 7:00:00 AM |
| 10 | ||
| 11 | Header Text | 🗓️ Your Schedule for Today |
Important: The configuration must be in column C (C5, C6, C8, C10, C12)
- In your Google Sheets, go to Extensions → Apps Script
- Delete the default
myFunction()code - Copy and paste the entire
calander.jscode - Save the project (Ctrl+S)
- Authorize the script when prompted
- In Google Sheets, you should see a new "SheetSmarts" menu
- Click SheetSmarts → Send Test Message to verify Telegram connection
- Click SheetSmarts → Send Today's Events Now to test calendar integration
- Click SheetSmarts → Install Daily Schedule Trigger
- The script will automatically send your schedule at the time specified in C10
| Cell | Setting | Description | Example |
|---|---|---|---|
| C5 | Bot Token | Your Telegram bot token from BotFather | 123456789:ABCdefGHIjklMNOpqrSTUvwxyz |
| C6 | Chat ID | Your Telegram chat ID | 123456789 or -987654321 |
| C8 | Calendar ID | Your Google Calendar ID | your.email@gmail.com |
| C10 | Daily Send Time | When to send daily schedule | 7:00:00 AM |
| C12 | Header Text | Custom header for messages | 🗓️ Your Schedule for Today |
The bot sends messages in this format:
🗓️ Your Schedule for Today: (Wednesday, 3 Sep 2025)
• 09:00–11:00: Meeting with Team
📍 Conference Room A
• 14:00–15:30: Project Review
• 18:00–19:00: Dinner with Friends
📍 Restaurant XYZ
Generated by SheetSmarts
| Menu Item | Description |
|---|---|
| Send Test Message | Sends a test message to verify Telegram connection |
| Send Today's Events Now | Manually sends today's schedule |
| Install Daily Schedule Trigger | Sets up automatic daily sending |
| Uninstall Daily Schedule Trigger | Removes automatic sending |
| Update Daily Schedule Trigger | Updates the trigger time |
-
"Telegram send failed"
- Check your Bot Token (C5)
- Verify Chat ID (C6)
- Make sure you've started a chat with your bot
-
"Calendar not found"
- Verify your Calendar ID (C8)
- Ensure the calendar is accessible to your Google account
-
No events showing
- Check if events exist for today
- Verify calendar permissions
- Check the script timezone matches your calendar
-
Trigger not working
- Ensure time format in C10 is correct (e.g.,
7:00:00 AM) - Check script permissions are granted
- Verify trigger is installed via the menu
- Ensure time format in C10 is correct (e.g.,
- Check the View → Logs in Apps Script for error messages
- Use SheetSmarts → Send Test Message to verify basic connectivity
- Ensure all settings in the Settings sheet are correctly filled
The script uses your Google account's timezone by default. Events are displayed in this timezone.
To use multiple calendars, you would need to modify the script to loop through multiple calendar IDs.
The script is configured to send messages to topic ID 63. To change this, modify the message_thread_id value in the code.
- Your bot token and chat ID are stored in your private Google Sheets
- Only you have access to your calendar data
- Messages are sent directly from Google to Telegram
- No external services store your data
This project is open source. Feel free to modify and distribute as needed.
calander.js- The main Google Apps Script codeSheetSmarts-Example.csv- Example spreadsheet with proper configurationREADME.md- This documentation file