De que se trata o artigo:

Este artigo mostra, de forma prática, as principais funcionalidades oferecidas pela API do Google Docs, que incluem download em formatos diversos, OCR e tradução automática. Aqui são apresentados os feeds utilizados na interação com a API de documentos e as operações básicas envolvendo esses feeds. Além disso, também são mostrados exemplos práticos utilizando a biblioteca cliente Java.


Para que serve:

As APIs de Dados do Google, de um modo geral, permitem a aplicações de terceiros interagirem com os serviços da Google. No caso da API Google Docs, é possível criar, editar, excluir, fazer upload e download de documentos. Além disso, também é possível traduzir um documento e converter um texto em forma de imagem num documento de texto editável. Com esta API podemos utilizar o serviço do Google Docs como sistema de backup de documentos, conversor de arquivos (como no exemplo deste artigo), tradutor de documentos, entre muitas outras funcionalidades.

Em que situação o tema é útil:

A integração entre serviços é uma tendência no desenvolvimento de praticamente todas as aplicações. Diante desse cenário, a Google oferece diversas facilidades e formas de integração com seus serviços. No caso específico da API do Google Docs, essa integração abre um leque de possibilidades para as aplicações, que podem utilizar esse serviço para fornecer funcionalidades como um repositório de documentos, uma ferramenta de tradução de textos, etc.

Google Documents List Data API:

A API do Google Docs é parte das APIs de Dados Google (Google Data APIs) que permite a aplicações de terceiros interagirem com os serviços Google. Com a API de documentos é possível gerenciar os documentos do usuário, traduzir documentos, converter imagens contendo texto em texto editável (OCR), dentre outras funcionalidades.

Para utilizar essa, ou qualquer outra API de dados, basta que a aplicação seja capaz de enviar requisições HTTP e manipular dados XML ou JSON. Para facilitar ainda mais, a Google oferece uma série de bibliotecas cliente em várias linguagens, inclusive Java. Utilizando essas bibliotecas, o desenvolvedor não precisa se preocupar com os detalhes do protocolo, bastando criar objetos que representem o serviço, os feeds e as entries que deseja manipular. Os serviços já oferecem métodos como getFeed(), para recuperar um determinado feed, insert(), para inserir uma nova entrada, e assim por diante.

Além das operações básicas, a API de documentos também oferece alguns serviços especiais. O serviço de exportação permite que um documento possa ser baixado em diversos formatos, por exemplo, uma planilha pode ser baixada como xls, ods ou csv. O serviço de tradução permite que um documento seja traduzido no momento do upload, sendo necessário informar na URL os parâmetros sourceLanguage e targetLanguage. Por fim, o serviço de OCR permite que textos em forma de imagem sejam convertidos em documentos de texto editáveis. Para isso basta acrescentar o parâmetro ocr com o valor true na URL de upload.

Como é do conhecimento de muitos, a Google disponibiliza APIs que permitem a aplicações de terceiros interagirem com os seus vários serviços. Dentre essas APIs estão as APIs de dados (Google Data APIs), através das quais é possível interagir com serviços como Google Contacts e Google Calendar, Picasa Web, Google Finance, Blogger, You Tube, Google Health, Google Docs, dentre outros. A lista completa dos serviços suportados pode ser vista em http://code.google.com/apis/gdata/.

Neste artigo veremos como utilizar a Google Documents List Data API, que é responsável pela interação com o serviço do Google Documents (ou simplesmente Google Docs). Aqui veremos como executar algumas operações básicas, como listar, fazer download e upload de documentos em formatos diversos e também algumas operações especiais.

O quadro “Google Data APIs – Conceitos Principais” mostra os conceitos básicos utilizados pelas APIs de Dados. Você pode encontrar mais detalhes sobre as APIs de Dados Google na edição 64 da Java Magazine no artigo “Google Data APIs”.

O artigo “Google Data APIs: Contacts”, da Java Magazine 65, mostra como utilizar a API de Dados de Contatos. O artigo “Google Data APIs: Calendar 2.0”, da Java Magazine 67, mostra com detalhes o uso da API de Dados do Google Calendar.

Veremos como cada operação funciona tanto em nível de protocolo, onde serão mostrados exemplos das requisições enviadas e das respostas recebidas em forma de XML, quanto em nível de código, utilizando a Java Client Library. Para não perder o foco prático, construiremos como projeto final deste artigo um conversor de arquivos capaz de fazer diversos tipos de conversão (doc para pdf ou ods para xls, por exemplo), incluindo a conversão de imagem para texto e tradução automática de documentos.

A API

A Google Documents List Data API, bem como as outras APIs de dados, disponibiliza métodos que permitem a aplicações de terceiros interagirem com algum serviço Google, no nosso caso, o Google Docs. Por meio desta, é possível listar, criar, editar e excluir documentos do usuário. Também é possível fazer upload e download de arquivos em vários formatos, gerenciar o compartilhamento e as versões dos documentos, dentre outras funcionalidades.

No momento da escrita deste artigo, as APIs de Dados estão na versão 2.0, mas algumas APIs, como a do Google Docs, já estão na versão 3.0. Inclusive, a versão mais recente da biblioteca cliente Java (Java Client Library) já oferece suporte à versão 3.0 da API de documentos. Entre as novas funcionalidades dessa versão estão: compartilhamento de pastas, tradução de documentos e extração de texto a partir de imagens. Dessa forma, neste artigo utilizaremos a versão 3.0 da API de documentos para que possamos experimentar algumas das novas funcionalidades.

No Java, para trabalhar com a API de Lista de Documentos, usamos basicamente os serviços dos tipos DocsService e SpreadsheetService, o feed do tipo DocumentListFeed, e entradas do tipo DocumentListEntry e suas subclasses, as quais veremos em mais detalhes adiante. Para gerenciar o compartilhamento de documentos são utilizadas listas de controle de acesso, que basicamente definem quais usuários têm acesso a cada documento e quais níveis de acesso esses usuários possuem. Para lidar com essas listas são utilizados o feed do tipo AclFeed e entradas do tipo AclEntry. Da mesma forma, para recuperar as revisões de um documento, ou seja, para ter acesso às versões anteriores de um documento, temos o feed do tipo RevisionFeed e entradas do tipo RevisionEntry.

Google Data APIs – Conceitos Principais

Este quadro lista os principais conceitos relacionados às APIs de Dados do Google para ajudar no entendimento do artigo:

Google Data APIs – Conjunto de APIs responsáveis por permitir a interação entre aplicativos de terceiros e os serviços Google. Essas APIs são disponibilizadas na forma de web services RESTful;

GData Protocol – Protocolo utilizado pelas APIs de Dados Google. É baseado principalmente no Atom e AtomPub. Atualmente os dados podem ser transmitidos nos formatos XML ou JSON, sendo XML o padrão;

Feed – Representa uma fonte de dados frequentemente atualizada que geralmente é utilizada para alimentar algum tipo de cliente. Também utilizamos o termo feed para nos referir a URL onde o feed em si pode ser encontrado, por exemplo, docs.google.com/feeds/ é a URL através da qual temos acesso ao feed dos documentos do usuário;

Entrada (Entry) – Representa uma entrada de dados num determinado feed. Uma tag Entry corresponde a um registro na tabela de um banco de dados;

Java Client Library – Biblioteca Java disponibilizada pelo Google para facilitar o uso das APIs de dados. Também existem bibliotecas para outras linguagens, como PHP, Javascript, Objective-C, .NET, etc.;

Client Login – Tipo de autenticação recomendado para aplicações desktop. O protocolo GData também suporta outros tipos de autenticação como OAuth e AuthSub, que são recomendados para aplicações web.

Neste artigo, utilizaremos o termo “documento” para referenciar qualquer tipo de documento, seja texto, apresentação, planilha e também pastas. Quando formos nos referir a um documento de texto, falaremos explicitamente.

Instalação

Antes de prosseguirmos precisamos configurar o nosso ambiente. Primeiramente, baixe a versão mais recente da Java Client Library e suas dependências (ver seção Links). Em seguida crie um projeto no Eclipse, NetBeans ou outra IDE de sua preferência e então adicione os jars da biblioteca cliente no build path do projeto. Para os exemplos deste artigo os jars necessários são os seguintes:

• gdata-base-1.0.jar;

• gdata-client-1.0.jar;

• gdata-client-meta-1.0.jar;

• gdata-core-1.0.jar;

• gdata-docs-3.0.jar;

• gdata-docs-meta-3.0.jar;

• gdata-media-1.0.jar;

• gdata-spreadsheet-3.0.jar;

• gdata-spreadsheet-meta-3.0.jar;

• google-collect-1.0-rc1.jar;

• mailapi.jar.

O arquivo mailapi.jar não faz parte da biblioteca cliente Java e deve ser baixado separadamente (ver seção Links). Feito isso, nosso ambiente estará “setupado” e pronto para utilizar a API do Google Docs.

A Java Client Library é composta por vários jars, divididos por serviço, para eliminar o overhead de se carregar toda a biblioteca para utilizar apenas um ou dois serviços. Dessa forma, o desenvolvedor pode escolher apenas os recursos que deseja utilizar.

Autenticando o usuário no serviço

Grande parte das operações oferecidas pelas APIs de Dados necessita que o usuário esteja autenticado no serviço, afinal essas APIs geralmente são empregadas para realizar algum tipo de ação sobre os dados do usuário, como documentos, contatos, eventos na agenda, fotos, etc. Para os exemplos vistos nesse artigo, utilizaremos a autenticação do tipo ...

Quer ler esse conteúdo completo? Tenha acesso completo