Eventually, this should become a collection of RingoJS convenience wrappers for the Google APIs based on GData.
Currently, a wrapper for the Google Spreadsheets Data API is implemented.
Spreadsheets and the worksheets contained therein are identified by either
- a string containing the spreadsheet key (in this case, the first worksheet is assumed as default) or
- an object of the form
{key: ..., title: ..., projection: ..., visibility: ...}
.
In the latter case, title
corresponds to either the title of the worksheet or its numeric index.
var key = "0AhnIlyZzlLgWdHFYUTNiTUlGZG5TUmdyMmVvTnpDNFE";
var locator = {key: key, title: 0};
In order to access a public spreadsheet programmatically, you need to start publishing (see: "Share > Publish to web") first.
// lists assume that the worksheet contains headings
var listValues = require("wraps/gdata/spreadsheet").getListValues(locator);
// [{"name":"ringo","age":"69"},{"name":"paul","age":"67"}]
var cellValues = require("wraps/gdata/spreadsheet").getCellValues(locator);
// {"1":{"1":"name","2":"age"},"2":{"1":"ringo","2":69},"3":{"1":"paul","2":67}}
// NB: 1-based indexing
var service = require("wraps/gdata/spreadsheet").Service(appName, user, password);
var values = service.getListValues(locator); // or: service.getCellValues(locator);
var list = service.getAsList(locator);
list.update(0, {name: "ringojs", age: 0}); // NB: 0-based indexing
list.append({name: "helma-ng", age: 2});
var values = list.values();
list.refresh(); // if the list may have changed externally
(Caveat: For some reason, those don't seem to process much faster than individual calls.)
service.updateCellValues(locator, cellValues);
wraps-gdata is available under the same license as RingoJS.
The components of the GData Java Client Library bundled in this package are licensed under the Apache License 2.0.