Tuesday, June 9, 2009

Google Apps Needs Structured Data – Gadgets 101

Update (Sept 24, 2010): This hasn’t really changed yet, but see Ryan’s post on using Google Apps as an Online Database…a nice abstraction in the meantime.

To test-drive the extensibility of the Google Sites (Google Apps) offering, I set out on a simple mission to create a page that contains a number of addresses plotted on a Google Map, with the goal of having the addresses maintained as “structured data” and not “content”. Unless I’ve totally overlooked a section of the docs, which is admittedly quite possible, it doesn’t look like API support around surfacing structured content (announcements, custom-lists) residing in Google Sites exists just yet; instead, it seems that one is relegated to using the spreadsheet as the backing data store for the time being.

I’m confident that this will change very soon, but it’s a reality we must work with for now.

Before posting the actual end-result, I wanted to summarize some of the stumbling blocks for first-timers:

1. Google Gadget Editor (GGE) only works in FireFox (do not try it in Chrome or IE) [3].

2. Despite excerpts in the Gadget Specification that require nocache parameters to be respected, many hosts appear to ignore this directive; iGoogle and Google Sites are two such hosts that seem to ignore this.

3. In order to truly have un-cached access to your Gadget, you need to install the Developer Gadget first [1].

4. Sizing: to give your gadget the ability to resize itself, you need to add the following to your spec:

  • A <Require feature="dynamic-height"/> tag (under <ModulePrefs>) to tell the gadget to load the dynamic-height library.
  • A call to the JavaScript function _IG_AdjustIFrameHeight() whenever there is a change in content, or another event occurs that requires the gadget to resize itself.

[1] – A Must Read
http://code.google.com/intl/en/apis/igoogle/docs/igoogledevguide.html

[2] – Sizing Issues
http://code.google.com/intl/en/apis/gadgets/docs/legacy/ui.html http://groups.google.com/group/Google-Gadgets-API/browse_thread/thread/0591e8fb9a944a1b

[3] – GGE
http://code.google.com/apis/gadgets/docs/legacy/gs.html#GGE

0 comments: