Register
Submit a solution
The challenge is finished.

Challenge Overview

Background:

The goal of this project is to be able to track additional metadata in a Google Calendar event. This will be used by executive admins to input additional information into manager calendar appointments, which will be used for reporting purposes. The goal of this challenge is to create an easy way for these users to view, enter, and update this information in textbox, checkbox, picklist, and multi-select picklist form. This information will be stored within the extendedProperties key/value set in the Google Calendar Event. Please note that because the end users of this tool are delegates, they must have the ability to view/change this data on any calendar which he or she manages, not just their own calendar.

Requirements:

Create a Chrome extensions which leverages Google Calendar API v3 to expose details contained within the event's private extendedProperties. This UI should be shown when the user accessed the create/edit event screen in Google Calendar. Ideally, it will be shown in the same browser window. Here is an example of how the user interface may look, but please, be creative! User interface will be judged as part of the overall scoring:

[mockup screenshot]

Attributes:

The following fields should be exposed for editing:

(Please note that these are not default calendar event fields, but rather custom information which will be stored within the extendedAttributes property. See API Data for details on how and where they should be saved.)

Staff (textbox)
Contact (textbox)
Advance (textbox)
Photo (checkbox - with string values corresponding to Yes or No)
Neighborhood (picklist)
Topic Area (multi-select picklist)

The available value choices for picklists and multi-select picklists may either be stored in the extension itself or reference an external configuration Google Sheet. For Topic Area, the user must be able to choose more than a single entry, if desired. The output should be a semicolon separated string (e.g. "Topic 1; Topic 2").

Configuration for the fields may either be stored in the extension itself or reference an external configuration Google Sheet.

Bonus points will be awarded for storing configuration in a Google Sheet in such a way where the interface is easily configurable without code edits.

API Data:

Calendar.events.get should return JSON with the keys as follows (data values will depend upon what is entered by the end user into the extension and are shown for example purposes only):

 "extendedProperties": {
  "private": {
   "Neighborhood": "Downtown",
   "Staff": "Jane Doe, 408-555-1212",
   "Topic Area": "Small Business; Environment and Energy",
   "Contact": "Jeff Smith, 650-555-1234",
   "Photo": "Yes",
   "Advance": "Melissa Moore"
  }
 }

Please use the 'patch' method to update any information in the event.

Conditions of Acceptance:

Mandatory:

1. From the event entry screen, a user must be able to access extendedProperties of a calendar event. This calendar event will not be on the user's calendar, but it will be on a calendar to which that person has owner-level access.

2. It must be possible to create, modify, and delete extendedProperties from this UI. Creation should work for a brand new account where keys do not currently exist. Clicking Save on the event should update both the standard fields and the extendedProperties.

3. Event extendedProperties should be easy view at a glance, preferably shown on the same screen as the event entry. UI should only show on the event entry or event edit screen, and it should not prevent the user from accessing any builtin Google functionality. It should also remain usable with varying screen resolutions and window sizes.

4. It must be possible to enter properties as a textbox, checkbox, picklist, or multi-select picklist.

  • Textbox entry translates directly into a string
  • Checkbox entry translates to a string "Yes" (if checked) or "No" (if not checked)
  • Picklist entry must present the user an option to choose from a pre-set list of values. The chosen value will become a string
  • Multi-select picklist must present the user with an option to choose one or more options from a pre-set list of values. The chosen value(s) will become a string, joined with semicolon (;) characters.

Desirable:

1. It should be straightforward for a non-programmer to change field names or picklist values without needing to edit code. Please provide an easy to use configuration file, perhaps contained within a Google Sheet or another external service.

 

Have fun, and let me know if you have any questions!

 

 



Final Submission Guidelines

Extension should be packaged as a zip including any necessary a manifest.json (v2) and all necessary html, js, and any other necessary components. 

Google Calendar API v3 (https://developers.google.com/google-apps/calendar/) must be used for all access to the calendar. All requests should be authorized using OAuth 2.0 (https://developers.google.com/google-apps/calendar/auth).

Supporting open source libraries are allowed. Please ensure they are included within the zip.

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30043049