Drupal Google Calendar Node Sync Origins
Preface#
This post is just to give some back story to the original needs of this module because I think it may help someone reading the documentation and asking “how can this help me?” while being a bit more anecdotal and less technical than the documentation. I will go in to more detail about the module design and usage in coming posts, so don’t feel bad if you don’t read this. :)
The goal of this module is to take Drupal nodes and put them on a Google Calendar. It is meant to be user-configurable using CCK fields for things like the dates and times, body and location information.
At the moment (Version 6-1.0) it requires CCK, Date, Date API, Date Timezone and Token to be installed.
Boring Back Story#
I have needed this module for a long time. Okay, I didn’t need it, because no one needs to sync their things with Google Calendar, but because I chose quite a long time ago to invest myself in the Google Way Of Doing Things; I have had a Gmail account since they were invite-only, I have had an Android phone since the HTC G1 came to Canada, I have nearly as many Google Apps accounts as I have domains.
I bought in to the Google Way originally because I was tired of constantly re-syncing my data across devices. In the past 6 years I have had 8 different smartphones not including the ones I demoed while working for a Rogers Wireless retailer. I have also had the same base set of contacts for that whole time because I have taken good care of my Gmail address book. Now I have calendar entries saved for the past 2 years and I just created an event for this coming November 2012 because I know I will still have access to this calendar. I avoid storing these things for myself and could probably write at length about that.
This goes a long way in explaining why I advise the freelance clients I have taken on over the last couple of years to start using Google Apps or at least get a Gmail account that they can live with.
Why I Needed It Then#
My desire for this module started when I built a site (now defunct) for the National Cycling Centre of Hamilton using Drupal 6. I needed the ability to hand the project off to another developer once it was done due to my regular work with Canadian elections so Drupal was a natural choice. I took a Node-based approach to things like scheduled events, company sponsors and image storage in order to take advantage of Views. The original ideas was that NCCH admins could update the site with new events, including prices and times and that riders and clients would be able to view the information.
I also wanted to enable Centre staff and riders to subscribe to a calendar feed on their Blackberries to eliminate missed practices or races. Instead of fussing over iCal feeds using the Calendar module and the required server load in the event that the NCCH team became a big deal in Canadian cycling, Google Calendar seemed like the perfect solution.
I wanted this to be that One Extra Thing that I could give my client as a way of saying thanks for taking a chance on a totally new idea when they could have paid some kid a weekend wage to build a site in Dreamweaver.
Unfortunately, no one had written anything that would push things to Google Calendar, so I was a bit disappointed and moved on to the next task on that job.
Why I Need It Now#
As part of my (more) regular job, I have gradually pushed for Drupal to be included as a core part of our business. This has resulted in a client web portal where clients can schedule jobs with us without the need of going through our sales department. It has vastly improved job tracking and prevented hundreds of jobs falling through the cracks.
I will mention that we are a company that does a lot of small, logically isolated Jobs for our clients. We offer a variety of services and these Jobs fit in very well with the Drupal idea of the Node. Jobs also contain a bunch of meta information such as files, dates and times, comments and billing info. Historically, it has taken our entire sales department to track these requests coming in from clients and receiving 4am phone calls for a job that needs to happen at 9am.
Our current workload includes executing a bunch of jobs for a bunch of existing clients. The jobs are not performed by the web portal, just tracked but it.
Because of the rigid schedules that most of our work operates on, we have always needed a calendar system. It started with whiteboards leaning against the board room wall in earlier, simpler times and has graduated to a few Google Apps calendars for various types of jobs.
After some googling, I found several modules that deal with Google Calendar in different ways:
- Google Calendar API module: Horribly out of date, uses AuthSub, seems to deal with Events (the Events module?) instead of strict nodes
- GCal Events module: Works in reverse. This module pulls info from Google Calendars and does not push.
- Subscribe to the Calendar module’s iCal feed in a Google Calendar: Our jobs can not be public and Google can not authenticate against our user database to gain the Drupal permission ‘view_job_calendars’. If this were possible, it would still be a horrible idea.
So, it was time to do it myself.
I will have a more technically minded post about the module next.