Formulas
Campos de Formula nos Boards da Copera permitem criar colunas calculadas que derivam seus valores automaticamente de outros dados nas suas linhas. Alimentado pelo Motor de Formulas da Copera -- uma linguagem de formulas dedicada com seu proprio parser e avaliador -- voce pode construir desde aritmetica simples ate logica condicional complexa e calculos com datas.
Visao Geral da Linguagem de Formulas
As formulas da Copera usam uma sintaxe similar as formulas de planilhas. Cada formula e avaliada por linha, com acesso a todos os valores de coluna naquela mesma linha. O motor de formulas suporta:
- Operadores aritmeticos:
+,-,*,/para operacoes matematicas - Concatenacao de texto:
¶ juntar valores de texto - Operadores de comparacao:
=,!=,>,<,>=,<= - Operadores logicos:
AND,OR,NOTpara combinar condicoes - Referencias a campos: Referencie outras colunas envolvendo o nome da coluna em chaves, ex.:
{Nome da Coluna} - Funcoes aninhadas: Funcoes podem ser usadas como argumentos de outras funcoes
Sintaxe Basica
{Price} * {Quantity}
Esta formula multiplica o valor da coluna "Price" pela coluna "Quantity" para cada linha.
IF({Status} = "Done", "Completo", "Pendente")
Esta formula retorna "Completo" quando a coluna Status e igual a "Done", e "Pendente" caso contrario.
Referencia de Funcoes
O Motor de Formulas da Copera fornece mais de 100 funcoes organizadas nas seguintes categorias. Abaixo esta uma referencia das funcoes mais comumente usadas.
Funcoes Matematicas
| Funcao | Descricao | Exemplo |
|---|---|---|
ABS(number) | Valor absoluto | ABS({Balance}) |
CEIL(number) | Arredondar para cima para o inteiro mais proximo | CEIL({Score} / 10) |
FLOOR(number) | Arredondar para baixo para o inteiro mais proximo | FLOOR({Price}) |
ROUND(number, decimals) | Arredondar para casas decimais especificadas | ROUND({Average}, 2) |
MIN(a, b, ...) | Menor valor | MIN({Estimate}, {Budget}) |
MAX(a, b, ...) | Maior valor | MAX({Score1}, {Score2}) |
SUM(a, b, ...) | Soma dos valores | SUM({Q1}, {Q2}, {Q3}, {Q4}) |
AVERAGE(a, b, ...) | Media aritmetica | AVERAGE({Test1}, {Test2}) |
MOD(number, divisor) | Resto da divisao | MOD({Row Number}, 2) |
POWER(base, exponent) | Elevar a uma potencia | POWER({Side}, 2) |
SQRT(number) | Raiz quadrada | SQRT({Area}) |
Funcoes de Texto
| Funcao | Descricao | Exemplo |
|---|---|---|
CONCAT(a, b, ...) | Juntar valores de texto | CONCAT({First Name}, " ", {Last Name}) |
LEFT(text, count) | Extrair do inicio | LEFT({Code}, 3) |
RIGHT(text, count) | Extrair do final | RIGHT({Phone}, 4) |
MID(text, start, count) | Extrair do meio | MID({ID}, 2, 4) |
LEN(text) | Contagem de caracteres | LEN({Description}) |
LOWER(text) | Converter para minusculas | LOWER({Email}) |
UPPER(text) | Converter para maiusculas | UPPER({Code}) |
TRIM(text) | Remover espacos iniciais/finais | TRIM({Input}) |
REPLACE(text, old, new) | Substituir ocorrencias | REPLACE({URL}, "http", "https") |
SEARCH(find, text) | Encontrar posicao de substring | SEARCH("@", {Email}) |
Funcoes de Data
O motor de formulas integra-se com uma extensa biblioteca de datas, dando acesso a poderosas funcoes de manipulacao e comparacao de datas.
| Funcao | Descricao | Exemplo |
|---|---|---|
TODAY() | Data atual | TODAY() |
NOW() | Data e hora atuais | NOW() |
YEAR(date) | Extrair ano | YEAR({Created}) |
MONTH(date) | Extrair mes (1-12) | MONTH({Due Date}) |
DAY(date) | Extrair dia do mes | DAY({Birthday}) |
WEEKDAY(date) | Dia da semana (0-6) | WEEKDAY({Start Date}) |
WEEKNUM(date) | Numero da semana do ano | WEEKNUM({Created}) |
QUARTER(date) | Trimestre (1-4) | QUARTER({Close Date}) |
DATEADD(date, count, unit) | Adicionar tempo a uma data | DATEADD({Start}, 14, "days") |
DATEDIFF(date1, date2, unit) | Diferenca entre datas | DATEDIFF({Start}, {End}, "days") |
IS_BEFORE(date1, date2) | Verificar se date1 e antes de date2 | IS_BEFORE({Due Date}, TODAY()) |
IS_AFTER(date1, date2) | Verificar se date1 e depois de date2 | IS_AFTER({Due Date}, TODAY()) |
IS_SAME_DAY(date1, date2) | Verificar se e o mesmo dia | IS_SAME_DAY({Created}, TODAY()) |
IS_TODAY(date) | Verificar se a data e hoje | IS_TODAY({Due Date}) |
IS_WEEKEND(date) | Verificar se a data cai em fim de semana | IS_WEEKEND({Delivery Date}) |
START_OF_MONTH(date) | Primeiro dia do mes | START_OF_MONTH({Date}) |
END_OF_MONTH(date) | Ultimo dia do mes | END_OF_MONTH({Date}) |
START_OF_WEEK(date) | Primeiro dia da semana | START_OF_WEEK({Date}) |
END_OF_WEEK(date) | Ultimo dia da semana | END_OF_WEEK({Date}) |
ADD_BUSINESS_DAYS(date, days) | Adicionar apenas dias uteis | ADD_BUSINESS_DAYS({Start}, 5) |
DIFF_BUSINESS_DAYS(d1, d2) | Dias uteis entre datas | DIFF_BUSINESS_DAYS({Start}, {End}) |
Funcoes Logicas
| Funcao | Descricao | Exemplo |
|---|---|---|
IF(condition, then, else) | Valor condicional | IF({Amount} > 1000, "Alto", "Baixo") |
SWITCH(expr, val1, result1, ...) | Comparar contra multiplos valores | SWITCH({Priority}, "P0", "Critico", "P1", "Alto", "Normal") |
AND(a, b, ...) | Verdadeiro se todas as condicoes forem verdadeiras | AND({Complete}, {Approved}) |
OR(a, b, ...) | Verdadeiro se qualquer condicao for verdadeira | OR({Urgent}, {Overdue}) |
NOT(value) | Inverter um booleano | NOT({Archived}) |
ISBLANK(value) | Verificar se esta vazio | ISBLANK({Notes}) |
Exemplos Comuns de Formulas
Concatenando Nomes
CONCAT({First Name}, " ", {Last Name})
Combina colunas de nome e sobrenome com um espaco entre elas.
Calculando Dias Ate o Vencimento
DATEDIFF(TODAY(), {Due Date}, "days")
Retorna o numero de dias restantes ate a data de vencimento. Valores negativos indicam itens atrasados.
Rotulos de Status Condicionais
IF(IS_BEFORE({Due Date}, TODAY()), "Atrasado",
IF(DATEDIFF(TODAY(), {Due Date}, "days") <= 3, "Vence em Breve", "No Prazo"))
Retorna "Atrasado" para itens vencidos, "Vence em Breve" para itens com vencimento em ate 3 dias, e "No Prazo" para o restante.
Calculo de Porcentagem
ROUND({Completed Tasks} / {Total Tasks} * 100, 1)
Calcula a porcentagem de conclusao arredondada para uma casa decimal.
Dias Uteis Restantes
DIFF_BUSINESS_DAYS(TODAY(), {Deadline})
Calcula o numero de dias uteis (excluindo fins de semana) entre hoje e um prazo.
Tratamento de Erros
Quando uma formula contem erros, a Copera exibe um indicador de erro na celula em vez de um valor. Erros comuns incluem:
- Erros de sintaxe -- Parenteses nao correspondentes, operadores ausentes ou nomes de funcoes nao reconhecidos.
- Incompatibilidade de tipos -- Tentar realizar aritmetica em valores de texto ou operacoes de data em numeros.
- Referencias nulas -- Referenciar uma coluna que nao tem valor na linha atual. Use
ISBLANK()para tratar campos opcionais de forma elegante. - Divisao por zero -- Dividir por uma coluna que contem zero. Envolva com um
IFpara verificar:IF({Total} = 0, 0, {Part} / {Total}).
O editor de formulas mostra uma pre-visualizacao ao vivo do resultado conforme voce digita, facilitando a deteccao e correcao de erros antes de salvar.
Criacao de Formulas com Assistencia de IA
Se voce nao tem certeza de como escrever uma formula, a Copera oferece um assistente de formulas alimentado por IA. Descreva o que voce deseja calcular em linguagem natural, e o assistente gerara uma formula para voce. Voce pode revisar, editar e refinar a sugestao antes de aplica-la a sua coluna.
Proximos Passos
- Saiba mais sobre Campos Computados para entender os campos Formula, Function e Tracker em profundidade.
- Configure Automacoes que disparam com base em resultados de formulas.
- Use Filtros e Ordenacao para filtrar linhas por valores de colunas de formula.