Skip to main content

1. Building a Booking System With Google AppScript

Berrick Saul Building Photo credit: Paul Kelly

We had an interesting enquiry for a mini "booking system" come in this week. The need is for a simple online way for research students ( 200ish of them ) to book hot desks (between 30 and 100 ) in the Berrick Saul Treehouse. They call them "perches".

Having looked at our ENTERPRISE room booking system, they were wondering if there was anything simpler that could be done with Google Apps perhaps. Maybe it could be done with a Calendar?

The Illusion of the Simple Problem

If someone puts it to you, like that, it sounds perfectly feasible doesn't it? How hard could it be? During my spare time this week it was suggested I take a look and see whether it would be possible... not to actually do it, just to see if what looked like a simple problem really was as simple as it sounded.

The person who requested this was on leave this week, so I've not been able to ask questions to get to the bottom of what they really want. So I've had to have a think about it one afternoon whilst juggling a massive collection of assumptions ( all of which will probably prove to be wrong ).

Getting Started


Anyway, so my initial thoughts were that there were three ways of doing this:

  1. Google App Engine: Too complex. Who wants to write another booking system from scratch? I haven't got the time or the ability.
  2. Google Spreadsheet(s) with an AppScript UI. Difficult to visualise/manage for non-technical staff, for example, if someone wanted to add a collection of "perch bookings" by hand
  3. Google Calendar with an AppScript UI. It would seem sensible to use a calendar for dates ( isn't it? ). Maybe we'd be able to connect with students' calendars so that their bookings would appear for them and they'd also get reminders etc. I'm not sure what having 70ish bookings on one day would look like though... it might be a mess too far.

And so, with a pad and paper I doodle some questions, or gotchas, or worries. It wasn't long before it was full... it included:

  • How do people currently book a perch?
  • How are perches identified? 
  • Have you EVER been too full? - What happens then?
  • How many perches is a student likely to want to book? Every day for a term, twice etc?
  • Would you expect people to be able to book a range of dates?
  • Would you expect people to be able to choose their perch?
  • What is the duration of a booking? By the hour? By the day?
  • Is there a personal limit on the number of bookings you can make? Per day? Per term?
  • Is there a "fairness" policy, randomness or just first come, first served arrangement for bookings?
  • Are there penalties for unused bookings?
  • Can students see who has booked other perches?
  • How far ahead can people book a perch? Next week, next month, a term, forever?

Given that they're called "perches", I think the best method should be flapping about until one becomes available. Based on what would be easiest  simplest, I worked on the assumptions that:

  • Perch booking are for an entire day
  • You are assigned perches at random ( you don't get to choose which perch )
  • There aren't any limits on how many you can book
  • You can't book ranges ( however admin staff may be able to do this to you )
  • I would leverage the CalendarEvent as much as possible. 
  • The user interface ( UI ) will need to take a back seat to it "just kinda working". 

But also, I wanted to not get too far with a solution. Partly because of all the unanswered questions and assumptions at the beginning but also because this exercise, if successful might be actually created by someone else who I might work with for an hour or so, included in which I'd teach them everything I know about Google AppScript... 

Here goes...












Comments

  1. This comment has been removed by the author.

    ReplyDelete

Post a Comment

Popular posts from this blog

Inserting A Google Doc link into a Google Spreadsheet (UPDATED 6/12/2017)

This article looks at using Apps Script to add new features to a Google Spreadsheet.

At the University of York, various people have been using Google spreadsheets to collect together various project related information. We've found that when collecting lots of different collaborative information from lots of different people that a spreadsheet can work much better than a regular Google Form.

Spreadsheets can be better than Forms for data collection because:

The spreadsheet data saves as you are editing.If you want to fill in half the data and come back later, your data will still be there.The data in a spreadsheet is versioned, so you can see who added what and when and undo it if necessaryThe commenting features are brilliant - especially the "Resolve" button in comments.
One feature we needed was to be able to "attach" Google Docs to certain cells in a spreadsheet. It's easy to just paste in a URL into a spreadsheet cell, but they can often all look too si…

Writing a Simple QR Code Stock Control Spreadsheet

At Theatre, Film & TV they have lots of equipment they loan to students, cameras, microphone, tripod etc. Keeping track of what goes out and what comes back is a difficult job. I have seen a few other departments struggling with the similar "equipment inventory" problems.

A solution I have prototyped uses QR codes, a Google Spreadsheet and a small web application written in Apps Script. The idea is, that each piece of equipment ( or maybe collection of items ) has a QR code on it. Using a standard and free smartphone application to read QR codes, the technician swipes the item and is shown a screen that lets them either check the item out or return it.

The QR app looks like this.



The spreadsheet contains a list of cameras. It has links to images and uses Google Visualisation tools to generate its QR codes. The spreadsheet looks like this.


The Web Application The web application, which only checks items in or out and should be used on a phone in conjunction with a QR cod…

One-To-Many Relationship in a Google Spreadsheet

It's often the case that you want and need to be creating a database to store your data, but Google Spreadsheets are just so handy aren't they? But Google Spreadsheets are very good at relational data.

Here's an example where, you want to have one column for the name of your recipe and another for the ingredients ( comma separated ).

How you use this script is you click on the cell you want to be relational and choose the Admin > Show Relationship Editor. This opens up a dialog window showing you all the options included so far. You then alter the ingredients and it saves a comma separated list into the spreadsheet.







Here's the spreadsheet. Use File > Make a copy to see it work and rummage around in the code.

If anyone can help make the UI prettier I'd be grateful, thanks.