I was talking with a potential customer who had need to manage a complex system for employee scheduling and timecards. It got me researching the topic to find possible solutions. I discovered a nice TimeKeeper project over at github. The TimeKeeper example creates a simple (mobile) web site form to add simple data. Data is stored in google sheet named “timeSheet”. It will add events to google calendar and email you every saturday a digest to help you keep track of time.

That example fully utilizes the tools Google has made available to the public, and offers a good chance for success at a very reasonable cost to the customer. I’d know Google is friendly to developers, but I’d never really knew the details about these tools, identified as “Google Apps Script”. It turns out Google gives you access to API’s and libraries that touch virtually all Google products. Access is via JavaScript code, but instead of the code running in the browser, the code runs on Google’s servers. Why does this matter? When the code runs on Google’s servers, it greatly changes the security model.. instead of passing Oauth tokens around, the Google Apps Script manages that for you. Way cool.

For anyone not familiar with Google Script Apps, there is a lot of information available online.

To run this sample: (reference)

  1. Open up your browser to google.com
  2. Ensure you are logged in to Google. (check upper right hand corner of the page.)
  3. Click on the 3×3 box icon, then select Google Drive.
  4. Select New –> More –> Google Apps Script
  5. Copy the contents of code.gs file from this repository to your script.
  6. In the script editor tool, choose File –> New –> HTML file. This will create a new tab in your editor.
  7. Copy the contents of index.html from this repository to your new html file.
  8. Save all files, give your project a name.
  9. “Once that basic framework is in place, all you have to do is save a version of your script, then deploy your script as a web app.” See instructions at https://developers.google.com/apps-script/guides/html/

(Note: I’ve suggested the instructions above be added to the README.md file on the github repository, but that doesn’t seem to be there yet…)