When I first saw the Google integration I thought that it worked entirely different then it actually does. I was expecting it to overwrite the personal calendar with timetable information, but instead it imports calendar events from my personal calendar into Gibbon. I’d like to build out each person’s calendar from their timetable and duty roster. I’d also like to do the same for students. It seems to me that the best way of doing this would be:
- Creating an additional module that would alert users when their timetable version is out of date with their current Google Calendar.
- The calendar sync would be too time consuming and error prone to run on login I *think*. I suspect it would need to be a client-based process that runs through the event updates one by one until completed. In my experience, Google API calls can sometimes be very slow.
- I would need to identify imported calendar events so that they can be overwritten and then suppressed when the calendar import takes place (so that they aren't duplicated).
I’m not sure how useful this is to others, but it would be useful to me. Does this seem like it would work?
Sounds like you’re on the right track if you were looking to develop this as an additional module. I’ve just been working on a somewhat similar integration, where staff absences/sub bookings recorded in Gibbon are synced back to a central Google calendar. Happy to share ideas if you decide to dive into some Gibbon development
I agree, syncing on login would likely be too slow. One place to start might be a user-facing “Sync my timetable” button, with a saved last-sync date. Luckily timetables don’t tend to change too much once the term is underway. From there, you could see if a more automated process, like a background cron task with a CLI script might work.
Yep, you’re right on the identifying calendar events part. The most fine-grained unit of the timetable is the gibbonTTDayRowClass table, which is the association of the day, period and class to the TT. The Google Calendar API returns an event identifier, so you could perhaps save these and look them up in a table that holds gibbonTTDayRowClassID, gibbonPersonID and googleEventID.
Might be possible to tinker with the recurrence model in the calendar API to see about combining events rather than having one per day per period per user. Could help speed up the API calls, but adds some extra complexity to tracking it all.
Best of luck!
Thanks for the feedback. Our timetable doesn’t work well in Gibbon this year (too many split or special-case classes), but I’m going to look into this for next August and if I make progress I’ll update you.
Could you guide me how can I make google calendar from school time table .
There currently aren’t any automated tools to turn a Gibbon timetable into a Google calendar. It sounds like @tr_james may be looking into this in the coming school year.
Gibbon does support displaying Google calendars alongside your school timetable. If you setup the Google Integration in System Admin > Third Party Settings you can add a School Google Calendar ID, which pulls in any school events from the calendar and displays them on the top row of your Gibbon timetable.