Skip to content

Schedule Google Sheets Integration

Stuart Olivera edited this page Jan 17, 2018 · 2 revisions

The schedule published on the homepage is dynamically loaded from a Google Sheet. This enables organizers to quickly update the schedule without touching a line of code.

Caching

Google Sheets API response is cached hourly. If the schedule is loaded at 3:01pm, the website will show the same schedule until it re-fetches at 4:01pm. This helps to prevent exceeding our API request limit, as well as avoid high request latency (an un-cached schedule load blocks the home page from displaying to the user).

This includes error responses, so if the schedule is broken at 3:01pm, it'll stay broken until 4:01pm (there should be a user-friendly message to check back later during this time).

Caching is ignored in development, unless a tmp/caching-dev.txt file exists (file content can be empty). This can be useful for testing the cache (see config/development.rb for details).

API Access & Permissions

  • An API key is required to read the sheet
  • The Google Sheet's sharing permissions must be:
    1. Shared with the API Key's associated Google user
    2. Made public ("Anyone with the link" or "Public on the web" link sharing)

The API Key can be obtained in Google's Developer Console. Enable the Sheets API, and create an API key credential. If possible, restrict API access to specific IP addresses.

For BrickHack, this is handled on the codeRIT Google account.

Clone this wiki locally