A powerful iOS widget built with Scriptable that displays your university or high school class schedule directly from a public Google Sheet.
It dynamically adapts to the day of the week, highlights the current or upcoming class, and supports a weekly overview.
Designed to bring clarity to your day—at a glance.
- 🗓️ Automatically shows today’s classes
- ⏱️ Displays countdown to current or next class
- 📅 Full weekly overview with
full viewmode - 🌈 Gradient backgrounds based on weekday
- 🔍 Simulated time/day view for preview/testing
- 🔄 Auto-refresh every 15 minutes
The Sheet should be published to the web as a CSV file.
Your CSV must contain the following headers:
| Day | Start | End | Title | Type | Section | Building | Location |
|---|
Example row:
| Day | Start | End | Title | Type | Section | Building | Location |
|---|---|---|---|---|---|---|---|
| 1 | 10:00 | 11:30 | CPS109 | Lecture | 011 | VIC | 105 |
Where Day is:
- 0 = Sunday
- 1 = Monday
- ...
- 6 = Saturday
- Open your Google Sheet
- Click on
File>Share>Publish to web - Choose
Comma-separated values (.csv)and the correct sheet/tab - Copy the generated link
It will look like this:
https://docs.google.com/spreadsheets/d/e/.../pub?output=csv
Paste it into your script by replacing the value of SHEET_URL.
const SHEET_URL = "https://docs.google.com/spreadsheets/d/e/your-url-here/pub?output=csv";Shows classes for today based on current system time.
Shows the entire week’s schedule in grid format.
Set the parameter:
full view
To test future days or class times:
test mon 10:30
To view the schedule for a specific day:
get tue
Use any of the following:
| Parameter | Purpose |
|---|---|
full view |
Show weekly grid |
test tue 11:00 |
Simulate time + weekday |
get wed |
Show Wednesday's classes |
| (empty) | Show today’s schedule (default) |
Each day of the week has its own background theme, defined in the code as:
const gradientThemes = {
monday: ["#0f2027", "#203a43"],
tuesday: ["#2c3e50", "#4ca1af"],
...
};Feel free to modify these for your aesthetic preference.
Small Widget
Medium Widget
large Widget
- During testing, use
widget.presentLarge()to preview widget output in-app. - Use
console.log()to debug any parsing issues. - Always ensure your Google Sheet is public and published as CSV.
Have questions or want help customizing it? DM me on Instagram or email me at rushiofficial1205@gmail.com.
Widgets shouldn’t be limited to timers—I’d love to build tools that help you passively learn, reflect, or stay organized. If you have a unique concept in mind, I’d love to collaborate.
This project is licensed under the MIT License.
Feel free to fork, build upon, and remix with attribution.
Enjoy using this widget ~ RP





