Como fazer uma Planilha do Google com dados abertos da Câmara Legislativa. Nesse exemplo uso uma fórmula customizada. Esse é o resultado final:
Note o uso de uma fórmula customizada:
Para criar uma fórmula customizada, vá no menu "Ferramentas" -> Editor de scripts...
Crie uma função chamada obterProposicao, como na imagem abaixo. A função chama um webservice da Câmara usando a classe UrlFetchApp ( ver https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app ). O webservice retorna XML que pode ser interpretado.
Porque o XML nesse caso tem uma estrutura simples só de um nível, um argumento chamado "elemento" declara "o que pegar do XML". Para ver os detalhes dos webservices da Câmara Legislativa, veja
http://www2.camara.leg.br/transparencia/dados-abertos/dados-abertos-legislativo
e
http://www2.camara.leg.br/transparencia/dados-abertos/dados-abertos-legislativo/webservices/proposicoes-1/obterproposicao
Enquanto o exemplo acima funcione, há uma melhoria e uma pergunta. Um problema é que cada referência à fórmula customizada na planilha chama o webservice uma vez. O ideal seria reduzir o número de chamadas ao webservice - se possível uma vez só pra planilha inteira - usando intervalos ( "ranges" ) de células. A pergunta é: quando é que as fórmulas são interpretadas e os dados são atualizados? Não achei a resposta muito facilmente. Em um post futuro mostrarei melhorias à solução resolvendo essas duas questões.