Upload
it-booze
View
5.893
Download
1
Tags:
Embed Size (px)
Citation preview
Overview of Google Spreadsheet API for Java
Nazarii Kostiv
Agenda● Overview● Authorization;● Work with worksheet;● List-based feeds;● Cell-based feeds;● Questions.
What we need to start● jdk 1.5 or greater;
● gdata-java-client jars;
● java mail API 1.4 or greater;
● javaBeans Activation Framework.
Overview
Authorizing Creating
spreadsheet service
Set spreadsheet URL and name
Get worksheet Get spreadsheet feedGet row or cell
Authorization SpreadsheetService service =
new SpreadsheetService("service name"); - create spreadsheet service service.setUserCredentials("username", "password"); - send user credentials
Getting spreadsheet feedString SPREADSHEET_URL = "https://spreadsheets.google.com/feeds/spreadsheets/private/full"; URL sheetListUrl =
new URL(SPREADSHEET_URL);- set spreadsheer URL; SpreadsheetQuery query = new SpreadsheetQuery(sheetListUrl);query.setTitleQuery("Spreadsheet name"); - set spreadsheet name; SpreadsheetFeed feed =
service.getFeed(query, SpreadsheetFeed.class); - get spreadsheet feed with entries.
Worksheet List<SpreadsheetEntry> spreadsheetEntries = feed.getEntries();SpreadsheetEntry spreadsheet = spreadsheetEntries.get(0); - get spreadsheet List<WorksheetEntry> worksheets =
spreadsheetEntry.getWorksheets(); WorksheetEntry worksheet = worksheets.get(0); - get worksheet;
Worksheet infoList<WorksheetEntry> worksheets = SpreadsheetDemoUtil.getWorksheets();
for (WorksheetEntry worksheet : worksheets) {System.out.println("Worksheet name: "
+ worksheet.getTitle().getPlainText() + ", Cols: "+ worksheet.getColCount() + ", Rows: "+ worksheet.getRowCount());
} Worksheet name: Worksheet 1, Cols: 20, Rows: 93Worksheet name: Worksheet 2, Cols: 20, Rows: 50Worksheet name: New worksheet, Cols: 20, Rows: 100
Working with worksheetWorksheetEntry worksheet = new WorksheetEntry();URL worksheetFeedUrl =
spreadsheetEntry.getWorksheetFeedUrl();insertedWorksheet = service.insert(
worksheetFeedUrl, worksheet); - add new worksheet;worksheetETag = insertedWorksheet.getEtag(); worksheet.setColCount(30);worksheet.update(); - update worksheet;
Working with worksheettitle = worksheet.getTitle().getPlainText();eTag = worksheet.getEtag();if (title.equals("New worksheet")
&& eTag.equals(worksheetETag)) {try {
worksheet.delete();} catch .... - delete worksheet;
List-based feedsURL listFeedUrl = worksheetEntry.getListFeedUrl();ListFeed feed =
service.getFeed(listFeedUrl, ListFeed.class); - get list-based feed with list of rows
for (ListEntry entry : feed.getEntries()) {
System.out.println(entry.getTitle().getPlainText());}
List based workingURL listFeedUrl = new URI(null, null,
worksheet.getListFeedUrl().toString(),"sq=width>25 and height<175", null).toURL();
listFeed = service.getFeed(listFeedUrl, ListFeed.class);for (ListEntry row : listFeed.getEntries()) {
System.out.println(row.get...);}
Add rowListFeed listFeed = service.getFeed(listFeedUrl, ListFeed.class);ListEntry row = new ListEntry();
row.getCustomElements().setValueLocal("Component", "New component");
row.getCustomElements().setValueLocal("width", "25");row.getCustomElements().setValueLocal("height", "19");
row = service.insert(listFeedUrl, row); - insert new row
Delete row ListFeed listFeed = service.getFeed(listFeedUrl, ListFeed.class); for (ListEntry row : listFeed.getEntries()) {
if (...) {row.delete();
}
Cell-based feedsURL cellFeedUrl = worksheetEntry.getCellFeedUrl();CellFeed feed =
service.getFeed(celFeedUrl, CellFeed.class); - get cell-based feed with list of cells
for (CellEntry cell : feed.getEntries()) { System.out.println(entry.getTitle().getPlainText());}
Cell based workingURL cellFeedUrl = new URI(null, null,
worksheet.getCellFeedUrl().toString(),"?min-row=2&min-col=4&max-col=4",
null).toURL(); CellFeed cellFeed = service.getFeed(cellFeedUrl, CellFeed.class); for (CellEntry cell : cellFeed.getEntries()) {
System.out.println(cell.getTitle().getPlainText();}
Cell based workingURL cellFeedUrl = mainWorksheet.getCellFeedUrl(); CellQuery cellQuery = new CellQuery(cellFeedUrl); cellQuery.setMinimumCol(2); cellQuery.setMaximumCol(4); cellQuery.setMinimumRow(4); cellQuery.setMaximumRow(4); CellFeed cellFeed = null; try { cellFeed = service.query(cellQuery, CellFeed.class);
} catch(...)
Cell data manipulationif (cell.getTitle().getPlainText().equals("A1")){
cell.changeInputValueLocal("123"); - set value to cellcell.update();
} .....
cell.changeInputValueLocal("=SUM(A1:B1)"); - set cell formula
Questions?
Links● https://developers.google.com/google-apps/spreadsheets/
● https://developers.google.com/google-apps/documents-list/
● https://developers.google.com/apps-script/guide
Nazarii KostivEmail: [email protected]