Monday, 24 September 2012

5.0 Building a Booking System With Google Apps

I think I have a booking system that is close to working. A big leap forward was made when someone on the Google Apps message boards shared a way of avoiding the painful timeouts and false error messages after creating a calendar entry.

You basically create an event, getting its ID and then get it again, using that ID rather than working with an object. Who'd have thought? Anyway, this is the code that works.


 var cal = CalendarApp.getCalendarById('YOUR_CALENDAR_ID@group.calendar.google.com');
   var eventID = cal.createEvent(title, startDate, startDate).getId(); // create/get event ID

   //recall the event for each element you want to add
   cal.getEventSeriesById(eventID).setDescription(eventDesc);
   cal.getEventSeriesById(eventID).setLocation(location)
   cal.getEventSeriesById(eventID).addGuest(email)
   cal.getEventSeriesById(eventID).addEmailReminder(30)

This workaround has meant that I could do away with the Task Queue sheet, which was becoming more complex than it needed to be. It looks pretty much looks the same and works quite well.



Caveats

I would say that I have a few concerns about how fast the interface works. Sometimes it feels like an age to open the "Booking dialog" above. And once you click the "Book this perch" button, there is a visible delay as the cells get filled in ( each cell needs to look up to see which row it is in, and which column, but this shouldn't be too arduous a task ).

I'm also a bit worried about the need for a GREAT BIG AUTHENTICATION dialog that scares the hell out of you with its a. size, b. big red border and c. ugly HTML. You only have to grant access to it once but still... after granting access to my script to add a calendar invite to your calendar, you then have to click "OK"... and THEN you can go back to where you were and do it all again ( this time with no big ugly dialog). It's awful. Look.



I have a few niggling doubts about permissions too. For example, in order for anyone to do anything useful ( adding data to the spreadsheet ) for example, I think you pretty much give them access to everything else. Of course in a utopian dreamworld, that means that anyone using the booking system can also speed up my code and improve things a bit. I look forward to that happening.

I have irksome niggles about how an why the onOpen() script sometimes works, installing the "Booking..." menu and sometimes doesn't.

In the process of making this I've also found a suspicious side-effect loophole of working with Google Groups. My intention was to be able to share this Booking System with a collection of students, adding them to a group "silently" email-wise... this doesn't work... more on this later.

I don't trust cats either.

I will make a copy available once I've tested it a bit more.







1 comment: