03 Jun 2022 | 7 minutos • Ferramentas
Coda - Fórmulas
Exibindo dados de forma dinâmica

Ingrid Machado
Engenheira de computação, especialista em engenharia de software. Autora deste querido blog.

Este texto faz parte da série de posts sobre o Coda.
Depois de falar sobre como formatar as páginas, incluir tabelas e criar visões, chegou a hora de deixar o documento um pouco mais dinâmico com as fórmulas.
Se você já está familiarizado com as fórmulas do Excel, provavelmente não vai ter muita dificuldade para entender as do Coda. Elas levam os documentos para outro nível e, apesar de desacelerar a construção inicial, elas apoiam muito no acompanhamento e manipulação dos dados.
Estrutura das fórmulas
Dentro de uma fórmula, podemos usar tabelas, colunas, linhas ou referências de outros elementos do documento. Para fazer uso desses objetos, as fórmulas utilizam nomes como referências.
No post sobre visões, nós selecionamos a tabela “Lista de clientes” em um seletor no momento de criar uma tabela. E é esse mesmo nome que será usado para fazer referências à essa tabela para escrever as fórmulas. Por isso, é bem importante nomear os objetos com nomes que façam sentido.
Para montar uma fórmula, os elementos são encadeados. O encadeamento é feito por pontos, seguindo a seguinte estrutura geral:
[Tabela].[Parte da tabela].[Ação na tabela]
Usando de exemplo a tabela “Lista de clientes” do post anterior, podemos escrever a seguinte fórmula:
[Lista de clientes].Filter(plan = "Premium Plan").Count()
Ela consulta a tabela “Lista de clientes”, filtra as linhas com o valor da coluna “plan” igual a “Premium Plan” e conta quantas linhas esse filtro retorna.
Para conseguir reproduzir esse exemplo no seu documento, inicie digitando o =
. Ele é o comando que abre o assistente de fórmulas e torna bem mais fácil buscar as referências e ações disponíveis.
Com ele, é possível escrever fórmulas apenas digitando o início dos nomes e preencher o restante usando o Tab. Abaixo da fórmula, o assistente exibe o resultado do que está sendo escrito. E, acima da fórmula, onde está escrito “Add Name”, você pode dar um nome para ela e usar como referência posteriormente.
Na imagem de exemplo, a primeira fórmula foi nomeada como “Número de clientes premium”. Depois, esse mesmo nome foi usado como referência para construir uma segunda fórmula, que usa o resultado em um teste.
Manipulando tabelas
Além de acessar as tabelas com fórmulas, podemos acessar ou até mesmo criar colunas com fórmulas.
Para acessar as colunas, basta seguir como no exemplo anterior, mas acessando a coluna da tabela com o operador .
para retornar a lista dos dados:
[Lista de clientes].email
Com essa lista, é possível realizar operações para selecionar o primeiro e o último item, contar o número de itens, somar os valores, ordenar e outras operações de listas.
Para usar fórmulas em colunas, basta criar uma coluna nova e selecionar o Column type “Formula”:
Assim que a coluna é criada, é aberto o mesmo assistente de fórmulas que é exibido no documento:
Escrevendo uma fórmula em uma coluna, ela é aplicada para todas as linhas. Na tabela “Lista de clientes”, temos duas colunas com o primeiro nome e o sobrenome de cada cliente. Normalmente, esse dado seria consultado como nome completo e, para ajustar essa visualização, fiz no exemplo uma fórmula com a função Concatenate, que combina textos separados em uma única String:
Concatenate(thisRow.first_name, " ",thisRow.last_name)
Filter
Como já comentei nos exemplos anteriores, podemos usar filtros para retornar partes de tabelas. O funcionamento é bem similar com os filtros via menu, que foram exemplificados no post de visões, mas a diferença é que manipulamos a fórmula diretamente.
thisRow
Para acessar uma linha da tabela, temos algumas opções. A primeira é através do operador @
, que acompanhado do valor de alguma linha da tabela, retorna a linha como um objeto, identificado pelo ID. No exemplo, ao digitar @Axel
dentro de uma página são exibidas as linhas com esse valor na tabela “Lista de clientes” no menu e, ao escolher a linha, é exibido @1
, pois esse é o valor da coluna chave que está sendo utilizada na tabela.
A outra opção é acessar essa mesma linha com a referência thisRow
dentro de uma tabela.
A principal diferença do Coda para o Excel, por exemplo, é que ao invés de termos a referência a uma célula em específico, temos uma referência a uma linha da tabela. Quando temos a referência da linha conseguimos acessar o valor em cada uma das colunas e montar documentos dinâmicos de forma mais simples.
Lookup
No Coda existem dois tipos de lookup: o de coluna e o de fórmula.
No primeiro tipo, é possível criar uma coluna que faz referência aos valores de uma outra tabela, seja ela existente ou não. Por exemplo, se criarmos uma coluna na tabela “Lista de clientes” e selecionarmos o tipo Lookup, será exibida uma lista de tabelas disponíveis para lookup e a opção de criar uma nova tabela.
Escolhendo a opção “Create new table”, o Coda cria uma tabela que já está referenciando a coluna da tabela “Lista de clientes”:
Dentro da coluna onde criamos esse lookup, podemos selecionar os valores de referência da nova tabela “Produtos”, que são as linhas da tabela exibidas com o valor da coluna chamada “Display column”. Essa opção é a melhor quando queremos selecionar os valores de uma tabela na outra.
No lookup de fórmulas, ao criarmos uma coluna escolhemos o tipo fórmula e dentro dela usamos a fórmula Lookup()
.
A fórmula tem 3 partes:
Lookup(table, column, match value)
table
: tabela a ser consultadacolumn
: coluna da tabela a ser consultadamatch value
: valor a ser comparado na coluna
Vamos usar de exemplo a tabela de produtos, que renomeei para “Produtos disponíveis”. Assim, evitamos confusões entre a referência da tabela e a referência da coluna, que tinham o mesmo nome até o momento.
Agora a tabela “Produto disponíveis” possui um campo de preço. Caso eu queira mostrar para cada cliente o valor do produto selecionado, eu uso a seguinte fórmula:
Lookup([Produtos disponíveis],[Produtos disponíveis].Tipo, thisRow.Produtos.Tipo).Preço
Ou seja, a coluna da tabela “Lista de clientes” vai exibir o valor encontrado ao comparar a coluna “Tipo” da tabela “Produtos disponíveis” com o valor da coluna “Produtos”. Note que eu uso thisRow.Produtos.Tipo
, o que significa que estou comparando valores iguais. Ao final da fórmula, eu seleciono o campo “Preço” para retorno do lookup.
A documentação recomenda o uso do Table.Filter()
. Fazendo com um filtro, a fórmula seria:
[Produtos disponíveis].Filter(Tipo=thisRow.Produtos.Tipo).Preço
Ou seja, na tabela “Produtos disponíveis”, filtra por linhas que tenham o valor da coluna “Tipo” igual ao da coluna “Produtos” na propriedade “Tipo” (comparando campos iguais) e, do resultado desse filtro, exibe o valor do campo “Preço”.
Esse tipo de lookup é o recomendado quando queremos listar o conteúdo de uma tabela em outra. Então é aconselhável que se desenhe primeiro o que é necessário atingir com a tabela antes de escolher o tipo de lookup.
Mesmo resumindo algumas fórmulas, esse post acabou ficando bem maior do que eu estava imaginando. Então, decidi deixar somente com esses exemplos.
Para a lista completa de fórmulas, você pode consultar a documentação.
Até a próxima!
O link do post foi copiado com sucesso!Mais conteúdos de Ingrid Machado

28 Nov 2022 • Ferramentas
Sistema de gestão de conteúdo - Construção - Parte 2
Este post é a terceira parte da explicação sobre como criei o meu projeto para o Coda Doctorate. Para entender o processo por completo, recomendo que inicie a leitura pelo post com a primeira pa...
5 minutos

14 Nov 2022 • Ferramentas
Sistema de gestão de conteúdo - Construção - Parte 1
Este post é a segunda parte da explicação sobre como criei o meu projeto para o Coda Doctorate. Para entender o processo por completo, recomendo que leia primeiro o post com a ideação. Recapit...
4 minutos

31 Out 2022 • Ferramentas
Sistema de gestão de conteúdo - Ideação
Depois do Coda Bootcamp, fiz a minha inscrição para o Coda Doctorate, que é a fase com conteúdo mais avançado sobre o Coda. Mas, a melhor parte, é que ele é muito focado em resolução de problemas. ...
6 minutos