Criando aplicações com Google App Script

Thiago Barradas
thiagobarradas
Published in
8 min readJun 6, 2020
Google App Script permite você criar aplicações de forma rápida e simples integrado ao G-Suite.

Acredito que a legenda a imagem acima defina muito bem o que é o Google App Script. A criação de aplicações com ele pode se tornar muito eficiente, principalmente quando você tem ideias simples, em alguns casos, “temporárias”, ao invés de desenvolver uma aplicação, cuidar de toda uma infraestrutura, monitoria, implantação, entre outros pontos envolvidos no desenvolvimento de software. Ao fim, você ainda tem o aproveitamento dos recursos do G-Suite como suporte, o que torna ainda mais incrível a sua utilização.

O que posso fazer de tão legal com o Google App Script?

Basicamente, você cria uma “função” ou uma mini-API (com os recursos de Get e Post) que será executada sobre algum estímulo, seja uma requisição ou algo que aconteça dentro das ferramentas do Google. Você pode receber respostas de um Google Forms, processar os dados por esse “script” que você irá criar, manipulando dados de geolocalização com o Google Maps, enviando e-mails com Gmail e usando o Google Sheets como um banco de dados para armazenar as informações ou para criação de gráficos e visualizações.

Ferramentas do G-Suite que possuem uma integração ridiculamente simples.

O mais legal é que é tão prático, que no mundo moderno, onde as pessoas têm (ou deveriam ter) uma noção de lógica de programação e de programação em si, elas também vão conseguir utilizar e automatizar alguns processos do seu dia-a-dia.

A construção do script é feita com javascript e conta com uma IDE própria do Google, online, com autocomplete, possibilidade de execução no modo debug e inserção de breakpoints e inspeção de variáveis. Todo um framework é oferecido com diversas bibliotecas built-in na plataforma, como por exemplo acesso à APIs externas de modo prático e conexões JDBC com diversos bancos de dados.

Exemplo da IDE do Google App Script.

Na interação com o usuários, você consegue trabalhar e adicionar elementos de interface nas ferramentas do Google, extendendo suas funcionalidades, criando menu, prompts e janelas. Nas chamadas via URL, você pode retornar conteúdo em HTML, com uma bela interface final, ou em Json, como uma bela API.

Ampliando o comportamento do G-Suite.

Todo fluxo de autorização do Google, usando as credencias das contas Google e as definições de escopos necessários, podem ser aplicados no seus script, como também permissão por grupos, domínio ou acesso anônimo, totalmente público.

Por fim, além de muitas outras coisas que podemos fazer, também podemos definir diversos gatilhos para acionar a execução do script, como eventos no G-Suite (um arquivo foi criado ou editado, uma nova linha adicionada no Sheets, um novo e-mail chegou no seu Gmail etc) e também trabalhar com jobs agendados.

Limitações de Uso

A ferramenta é bastante poderosa e confesso que em minhas utilizações consegui executar tudo que precisei, tecnicamente falando. Porém, a quantidade de operações que você pode fazer para cada categoria de uso, pode ser um fator que inviabilize a sua aplicação, como conexões JDBC, tempo total de execução, chamadas à APIs externas, tamanho do payload do e-mail, anexos etc. Para entender melhor as limitações, acesse: https://developers.google.com/apps-script/guides/services/quotas

Vamos criar uma aplicação com o Google App Script?

Como o aprendizado é melhor com exemplos na prática e com a mão na massa, vamos criar uma aplicação pra deixar um pouco mais claro o seu funcionamento.

Vamos criar uma aplicação que processe doações (pagamentos) na Mundipagg e salve suas informações (e atualizações via webhook) em um Sheets, simulando um relatório ou uma base de dados. Lembrando que isso é apenas um exemplo que será feito totalmente em ambiente de teste. Não acredito que você deva usar o Google App Script para processar pagamentos na vida real hehe!

Vamos separar em algumas etapas:

  • Criação de conta de teste na Mundipagg;
  • Criação do Sheets e primeiras linhas do Google App Script;
  • Criação de um checkout de pagamento;
  • Interpretação e persistência dos dados de webhook (atualizações);

Aqui tem um resumo do que iremos criar:

Lembre-se que isso é apenas um teste. Para simular um pagamento com sucesso, utilize o número do cartão 4000000000000010 (use qualquer nome, validade do cartão e cvv).

A atualização da planilha pode levar alguns segundos ou minutos, dado que o processo de recebimento de webhook é assíncrono.

Conta na Mundipagg

Para criar uma conta e usar a API da Mundipagg para testes, siga o passo-a-passo dest link: https://link.medium.com/PNWLNSv016

É rápido e fácil! 😃

Google Sheets + Google App Script

Acesse com a sua conta o Google Sheets e crie uma planilha.

A planilha foi renomeada para Demo Google App Script with Payments e a página atual para webhooks.

Para criar um script já vinculado a sua planilha, vá em Ferramentas > Editor de Script.

A IDE para edição do script será exibida.

Para testar os métodos Get e Post, vamos criar um pequeno script que irá adicionar uma linha na planilha dizendo por qual método foi chamado.

Veja o código inicial:

Importante ressaltar que o nome das funções devem ser exatamente doGet e doPost para responder as chamadas HTTP, e elas recebem informações da requisição por parâmetro. Para inspecionar a variável request, você pode utilizar o comando console.log(request). Você pode criar quantas funções (e arquivos) quiser para suportar e melhorar a organização do seu código.

Após feito isso, vamos publicar o nosso script. Acesse o menu Publicar > Implantar como aplicativo da web. Isso permitirá que o seu código seja acessível e publicado instantaneamente em uma URL de rápido acesso. As outros opções basicamente necessitam de uma conta no GCP para uma implementação direto na sua cloud.

Uma janela irá solicitar algumas informações adicionais, como dados da versão que está sendo publicada, como deve executar o app (se deve ser executado com o seu usuário sempre, ou, se deve solicitar a identificação para o usuário que está acessando) e quem pode acessar o app (pode-se restringir à você, usuários logados ou anônimos).

Para nosso teste vamos publicar uma URL pública, permitindo o acesso anônimo, e a execução (o usuário que estará escrevendo na planilha) será o meu próprio.

Pode ser que seja solicitado que você autorize o seu próprio app. Faça-o. Em seguida, a URL de acesso ao seu script estará disponível.

Copie a URL, cole no seu navegador e pressione <enter> para efetuar um Get. Após essa ação, você verá uma mensagem de sucesso padrão do Google (pois nenhuma resposta específica foi configurada) e uma nova linha poderá ser observada na sua planilha:

Para testar o método Post, você pode utilizar o terminal (via curl curl -X POST <url>`), Postman, ReqBin ou qualquer forma que conhecer. Após o Post, uma nova linha será adicionada na sua planilha.

Agora já podemos ir para a próxima etapa.

Checkout de Pagamento

Para fazer uma chamada à API da Mundipagg e criar um link de checkout (para redirecionar o usuário para o pagamento) vamos usar a biblioteca UrlFetch.

Para autenticar, iremos utilizar a chave secreta que obtivemos a partir da conta de teste criada na Mundipagg, e para a criação do checkout, seguiremos a documentação na API Reference da Mundipagg.

O script abaixo recebe um parâmetro via query string (amount) que caso o valor esteja permitido para uma “doação”, ele segue para a criação do checkout. Ao fim, é feito um redirect utilizando uma “artimanha” bem conhecida do javascript, dado que não é possível alterar o status code de retorno via script, com isso, o usuário é redirecionado para o checkout.

Para testar meu lindo checkout, acesse:

Lembre-se que isso é apenas um teste. Para simular um pagamento com sucesso, utilize o número do cartão 4000000000000010.

Para publicar novamente o seu app (atualizar), repita o passo de publicação explicado anteriormente e escolha em “Versão do Projeto” a opção “Novo”, para que o novo código responda na mesma URL previamente publicada.

Recebendo Webhooks e Salvando na Planilha

No dashboard transacional da Mundipagg, configurei para receber webhooks dos eventos de cobrança paga charge.paid. Com isso, sempre que um pagamento tiver sucesso, um Post será feito na URL cadastrada (meu lindo Google App Script).

Na minha planilha, deletei todo o conteúdo de testes anteriores e coloquei, manualmente, na primeira linha, os headers:

O código para receber e salvar alguns dados do webhook na planilha ficou assim:

Com isso, após abrir o checkout e efetuar o “pagamento”, uma linha é adicionada na planilha com o resultado do processamento, de forma assíncrona.

Faça um pagamento de teste e visualize a planilha com os resultados aqui nesse link (use o cartão 4000000000000010 para simular sucesso):

https://docs.google.com/spreadsheets/d/1H0AgOwbucyVWYA7Ptx1KIimBHV9u19SpldnefHd4Frs/edit?usp=sharing

Agora, você conhece uma nova maneira de automatizar e resolver alguns probleminhas do dia-a-dia de maneira simples e prática! 😊

--

--

Thiago Barradas
thiagobarradas

Microsoft MVP, Elastic Contributor. Entusiasta de novas tecnologias e arquiteto de software na Stone. Cultuador do hábito de formar cabeças pensantes.