Skip to content

Class Schedule Viewer Widget

ScriptableWidget SizeData SourceSchedule TypeThemeStatusLast Updated

Schedule Widget

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.

✨ Features

  • 🗓️ Automatically shows today’s classes
  • ⏱️ Displays countdown to current or next class
  • 📅 Full weekly overview with full view mode
  • 🌈 Gradient backgrounds based on weekday
  • 🔍 Simulated time/day view for preview/testing
  • 🔄 Auto-refresh every 15 minutes

📂 Google Sheet Format

The Sheet should be published to the web as a CSV file.

Required Columns

Your CSV must contain the following headers:

DayStartEndTitleTypeSectionBuildingLocation

Example row:

DayStartEndTitleTypeSectionBuildingLocation
110:0011:30CPS109Lecture011VIC105

Where Day is:

  • 0 = Sunday
  • 1 = Monday
  • ...
  • 6 = Saturday

🔗 How to Get Your Google Sheets CSV URL

  1. Open your Google Sheet
  2. Click on File > Share > Publish to web
  3. Choose Comma-separated values (.csv) and the correct sheet/tab
  4. 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.

js
const SHEET_URL = "https://docs.google.com/spreadsheets/d/e/your-url-here/pub?output=csv";

📏 Widget Sizes and Modes

Default Mode

Shows classes for today based on current system time.

Full View Mode

Shows the entire week’s schedule in grid format.
Set the parameter:

full view

Simulate Specific Day or Time

To test future days or class times:

test mon 10:30

View Other Days

To view the schedule for a specific day:

get tue

⚙️ Widget Parameters

Use any of the following:

ParameterPurpose
full viewShow weekly grid
test tue 11:00Simulate time + weekday
get wedShow Wednesday's classes
(empty)Show today’s schedule (default)

🎨 Gradient Themes

Each day of the week has its own background theme, defined in the code as:

js
const gradientThemes = {
  monday: ["#0f2027", "#203a43"],
  tuesday: ["#2c3e50", "#4ca1af"],
  ...
};

Feel free to modify these for your aesthetic preference.

📸 Screenshot

Small Widget

Medium Widget

large Widget

🧪 Development Tips

  • 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.

🙌 Feedback

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.

📜 License

This project is licensed under the MIT License.

Feel free to fork, build upon, and remix with attribution.

Enjoy using this widget ~ RP