Coda + API de tempo + Automação
Aprenda a criar uma automação com Coda e Make.com usando API
A um tempo atrás, recebi duas mensagens de pessoas pedindo ajuda para um problema no Coda, onde descobri mais tarde que este problema era para uma vaga de emprego. O exercício pedia proficiência no Coda, Make.com e saber trabalhar com APIs. O problema estava dividido em duas partes
PARTE 1 - Pegar a temperatura atual e criar arquivo
Problema
Nesta primeira parte, você deveria criar duas tabelas. Uma para enviar o nome da cidade e receber a temperatura e outra para receber o documento criado no Google Docs com as informações do tempo.
Na Tabela 1 abaixo, você poderia escrever o nome da cidade, clicar no botão gerar e ele iria retornar a temperatura atual, depois criar a o documento no Google Docs, depois criar a linha como está na Tabela 2 abaixo, com o nome da cidade, temperatura, e o link do documento gerado.
Solução
Para solucionar este problema, vamos por partes:
1 - Criação das tabelas
Simplesmente crie as tabelas como elas estão nas imagens, considerando todos as colunas com seus respectivos tipos:
Tipo das colunas na tabela “_clima sua cidade”:
Cidade - text
Gerar - button
Temperatura - number
Documento - relation (será criada automaticamente a partir da tabela do documento)
Ver documento - button
Tipo das colunas na tabela “_documento1”:
Data - date
Cidade - text
Temperatura - number
Link - link
_tempo1 - relation - aponte para a tabela “_clima sua cidade”, depois clique no botão para criar a relação na outra tabela
Depois de criado as tabelas, você vai ter que instalar o Pack “Make.com w/ payload” criado por mim - Elber Domingos. Depois que instalou, adicione a fórmula abaixo no botão “Gerar”. O Link que está dentro do método POST na fórmula é o link de um Webhook do Make.com da aplicação que criei. Você verá mais abaixo explicação sobre isso.
[Make.com w/ Payload]::POST("https://hook.us1.make.com/27vr3pqp808mks41rrsha6pn268h8w3r", Object(
"cidade",
thisRow.Cidade.EncodeForUrl(),
"id-row-tempo",
Split(thisRow + "", "/").Last(),
"suaCidade",
"true"
))
NOTA - o texto acima é a mesma fórmula da imagem, mas você pode copiar e colar.
Depois você pode adicionar a fórmula para o botão “Ver”
Copie a fórmula abaixo para o botão “Ver”:
OpenWindow(thisRow.Documento.Link)
Perceba que o botão “Gerar” está enviando 3 variáveis para o Webhook do Make.com:
cidade - o nome da cidade para pegar a temperatura
id-row-tempo - o identificador único da linha para que você possa retornar um valor para a linha atual (fazer update da temperatura).
suaCidade - variável que vai ser filtrada no Make.com para seguir a rota de criação do documento ou da parte 2 do exercício. Você verá mais abaixo.
2 - Pegar a chave API
Depois que você criou as tabelas com as fórmulas, pode criar a chave da API do Weather API. Entre no site deles, cadastre-se e pegue a chave API
Lembre-se que cada chave API é única, como se fosse uma senha. Não exponha ela - eu mesmo vou resetar esta chave que estou mostrando para você apenas para fins didáticos.
Depois, acesse a documentação da API para aprender como ela funciona. É importante você notar que toda documentação apresentará a maneira correta de usar a API, e geralmente terão exemplos de como usar. No nosso caso, usaremos o método Forecast em formato JSON.
Como você pode ver na imagem abaixo, eles tem um exemplo de como usar a API:
No nosso caso, vamos pegar o forecast (que é a temperatura para dias por vir) de 5 dias, e vamos colocar para mostrar em português. No final, usando a minha chave API de exemplo, a url ficou:
http://api.weatherapi.com/v1/forecast.json?key=66183c5960f0479bae6155852240410&q=Campinas&days=5&lang=pt
Na url acima, aonde está escrito “Campinas”, nós iremos colocar a variável do nome da cidade no Make.com - você verá mais abaixo.
3 - Automação - Make.com
Entre no Make.com, crie sua conta se já não tiver, crie um novo cenário, e vamos construi.
Insira um módulo de “Custom Webhook”, pegue o link que foi gerado, e coloque na fórmula do botão “Gerar” como foi mostrado acima
Insira o módulo “Make a request” do HTTP. Selecione o Method GET, insira a url da Weather API com a sua chave API, e substitua o nome da cidade pelo nome da cidade do Webhook. IMPORTANTE: para ver o nome da cidade como está na foto, você precisa rodar o cenário e clicar no botão do Coda “Gerar” para enviar as informações e ficarem registradas, e assim você poder usar elas no Make.
Insira o módulo “Parse JSON”, e coloque o “Data” do módulo HTTP anterior no campo “JSON string”. Vejam imagem abaixo. Lembre de rodar o cenário até o módulo HTTP para ver as informações do módulo anterior.
Depois insira o módulo “Router”, depois insira outro módulo “Create a document from a template” do Google Docs numa das rotas do Router. Clique no campo de filtro do Router e insira o nome do filtro e depois selecione “suaCidade” do Webhook para o campo “Condition” e escreva “true” no último campo.
Crie um template no Google Docs a formatação da imagem abaixo. Os duplos colchetes servem para criar as variáveis que serão substituídas.
Após criar o documento, vá no módulo do Google Docs que você inseriu anteriormente, selecione sua conta e o template que criou, e link as informações do módulo “Parse Json” para as variáveis do documento. Lembre-se de rodar o cenário até o módulo “Parse Json” para conseguir visualizar as variáveis. Acompanhe com a imagem:
Depois adicione o módulo “Update Row” do Coda. É nele que usaremos a variável do “id-row-tempo”, para enviarmos a temperatura novamente para a linha. Fala sua conexão com o Coda, selecione o nome do DOC, a tabela e depois no campo “Row ID or Name”, deixe o “Map” ativado como está na imagem, preencha o campo com a variável “id-row-tempo” do módulo Webhook, e depois no campo “Temperatura”, coloque como está na imagem:
Depois insira o módulo “Create Row” do Coda, selecione a conexão, DOC e tabela, e depois preencha os campos como no tutoria acima, da forma como está na imagem abaixo. Neste ponto, eu espero que você já tenha entendido a ideia de como funciona.
Conclusão Parte 1
Salve o cenário no Make, vá para o Coda, escreva o nome de uma cidade e faça o teste rodando no Make. Lembre-se de ativar o cenário no Make para rodar corretamente. Se ainda ficou com dúvida, assista o vídeo tutorial que está no meu canal do YouTube.
PARTE 2 - Pegar temperatura de vários dias de uma cidade e resumir
Problema
Neste desafio, você deve retornar todos os dias do forecast de uma cidade, inserir numa tabela, e depois fazer o resumo. Veja imagens abaixo:
Como deve funcionar:
Clica no botão “Obter Dados”. Ele busca 5 dias de forecast da cidade.
Automaticamente inseri os dados dos 5 dias na tabela “_informações do clima”.
A tabela “_clima cidade” faz a estatística e o resumo de forma automática.
Solução
1 - Criação das tabelas
Simplesmente crie as tabelas como elas estão nas imagens, considerando todos as colunas com seus respectivos tipos:
Tipo das colunas na tabela “_clima cidade”:
Cidade - text
Obter - button
Estatística da semana - text (será fórmula)
Resumo da semana - text (será fórmula)
Tipo das colunas na tabela “_documento1”:
Cidade - text
Dia - date
Temperatura Mínima - number
Temperatura Máxima - number
Temperatura Média - number
Condição - text
Coloque no botão “Obter” a mesma fórmula da parte 1 deste tutorial, mudando apenas o valor da última variável “suaCidade” para “false”, como na imagem:
Após configurar todas as tabelas e a fórmula do botão, usando o mesmo link do Webhook, vamos direto continuar a parte do Make, porque neste momento apenas completaremos o cenário. Como usamos o módulo “Router” no Make, não preciso criar outro cenário, porque as informações que o Webhook recebe são as mesmas.
2 - Automação - Make.com
Insira o módulo “Iterator” numa nova rota do Make, e no campo “Array”, insira a variável “forecastday[]” como está na imagem abaixo
Assim como você fez na parte 1, modifique o filtro da rota para a variável “suaCidade” ser false.
Depois insira o módulo “Crete Row” do Coda, e assim como na parte 1, selecione o DOC, tabela e, quando aparecer os campos para serem preenchidos, selecione os campos do Iterator. Apenas o nome da cidade você pode pegar do módulo Parse JSON. Siga as instruções da imagem:
3 - Fórmulas
Depois que você finalizar até a parte anterior, rode o cenário (lembre de salvar), escreva o nome da cidade e clique no botão “Obter dados”. Você deverá, depois de alguns segundos, ver as linhas sendo criadas. Após elas serem criadas, vamos criar a fórmula da coluna
“Estatísticas da semana”:
Fórmula abaixo para copiar e colar:
[_informações do clima]
.Filter(
Cidade = thisRow.Cidade
)
.ForEach(
Concatenate(
Dia,
" - Min ",
[Temperatura Mínima],
"ºC/Max ",
[Temperatura Máxima],
"ºC - ",
"Variação de ",
[Temperatura Máxima] -
[Temperatura Mínima],
"ºC"
)
)
.BulletedList()
Esta fórmula faz:
[_informações do clima]: Refere-se a uma tabela de dados contendo informações climáticas (exemplo: cidade, dia, temperaturas).
.Filter(Cidade = thisRow.Cidade): Filtra a tabela de informações climáticas, retornando apenas as linhas que correspondem à mesma cidade da linha atual (thisRow).
.ForEach(): Para cada linha que passou pelo filtro, executa a ação especificada.
Concatenate(Dia, “ - Min “, [Temperatura Mínima], “ºC/Max “, [Temperatura Máxima], “ºC - “, “Variação de “, [Temperatura Máxima] - [Temperatura Mínima], “ºC”): Concatena as informações do dia, as temperaturas mínima e máxima, e a variação de temperatura em uma única string formatada.
Exemplo de saída: “Segunda-feira - Min 15ºC/Max 25ºC - Variação de 10ºC”.
.BulletedList(): Transforma o resultado final em uma lista com marcadores (bullets), onde cada item é a string formatada para um dia específico.
Resumo da Semana
Esta fórmula acrescenta um item que permite você faze criar uma variável - withname():
Fórmula abaixo para copiar e colar:
[_informações do clima]
.Filter(
Cidade = thisRow.Cidade
)
.WithName(
temp,
Concatenate(
"Menor temperatura: ",
temp.[Temperatura Mínima].Min(),
LineBreak(),
"Maior temperatura: ",
temp.[Temperatura Máxima].Max(),
LineBreak(),
"Temperatura média: ",
temp.[Temperatura Média].Average()
)
)
O que esta fórmula faz:
[_informações do clima]: Refere-se a uma tabela de dados contendo informações climáticas (exemplo: cidade, dia, temperaturas).
.Filter(Cidade = thisRow.Cidade): Filtra a tabela de informações climáticas, retornando apenas as linhas que correspondem à mesma cidade da linha atual (thisRow).
.WithName(temp, …): Armazena o resultado do filtro em uma “variável” temporária chamada temp, que pode ser utilizada dentro do restante da fórmula.
Concatenate(…): Concatena diferentes informações em uma única string formatada:
“Menor temperatura: “: Texto fixo que será exibido.
temp.[Temperatura Mínima].Min(): Calcula e exibe a menor temperatura mínima registrada nas linhas filtradas.
LineBreak(): Adiciona uma quebra de linha (pula para a linha seguinte).
“Maior temperatura: “: Texto fixo que será exibido.
temp.[Temperatura Máxima].Max(): Calcula e exibe a maior temperatura máxima registrada nas linhas filtradas.
LineBreak(): Adiciona uma nova quebra de linha.
“Temperatura média: “: Texto fixo que será exibido.
temp.[Temperatura Média].Average(): Calcula e exibe a média das temperaturas médias das linhas filtradas.
Essa fórmula gera uma string contendo as seguintes informações para a cidade da linha atual:
A menor temperatura mínima registrada.
A maior temperatura máxima registrada.
A média das temperaturas médias.
Conclusão Parte 2
Faça o mesmo teste, como na parte 1, e você verá que as linhas serão criadas de forma automática. Se quiser, siga o tutorial em vídeo que fiz:
Conclusão Geral
O Coda é extremamente poderoso e flexível, podendo trabalhar com qualquer tipo de API. Ele fica ainda mais poderoso quando colocamos automações e botões para trabalhar em conjunto, especialmente com o Make.com ou plataformas semelhantes, como N8N.
Não deixe de aprender cada vez mais sobre o Coda e construir microssistemas que agilizam a vida da sua empresa, ou que você possa construir para outras empresas e fazer dinheiro com isso.