Como Usar a Fórmula find() do Notion para Pesquisar em Arrays de Relação
🔍 WiseChecker

Como Usar a Fórmula find() do Notion para Pesquisar em Arrays de Relação

As fórmulas do Notion podem manipular dados de propriedades de relação e rollup, mas pesquisar em um array de itens relacionados requer uma função específica chamada find(). Sem ela, não é possível verificar se uma página relacionada atende a uma condição ou extrair um valor de um item específico dentro do array. Este artigo explica como a função find() funciona com arrays de relação, quais parâmetros são necessários e como construir um exemplo prático passo a passo.

A função find() retorna o primeiro elemento em um array que satisfaz uma condição. Quando aplicada a uma propriedade de relação, o array contém todas as páginas vinculadas, e você pode pesquisar por um valor específico em um rollup ou propriedade dessas páginas. Este guia foca na sintaxe exata e em um caso de uso prático para que você possa aplicar em seus próprios bancos de dados.

Principais Conclusões: Fórmula find() do Notion para Arrays de Relação

  • find(condição, array): Retorna o primeiro elemento do array que torna a condição verdadeira, ou undefined se nenhuma correspondência for encontrada.
  • Propriedade de relação como array: Quando usada em uma fórmula, uma propriedade de relação se comporta automaticamente como um array das páginas vinculadas, não como um valor único.
  • Rollup dentro de find(): Você deve referenciar uma propriedade de rollup (ex.: prop("Nome do Rollup")) dentro da condição para acessar dados das páginas relacionadas.

ADVERTISEMENT

Como o find() do Notion Funciona com Arrays de Relação

A função find() faz parte da linguagem de fórmulas do Notion e é usada para pesquisar em um array. Sua sintaxe é find(condição, array). A condição é uma expressão booleana que testa cada elemento do array. A função retorna o primeiro elemento para o qual a condição é avaliada como true. Se nenhum elemento satisfizer a condição, retorna undefined.

Quando você tem uma propriedade de relação em um banco de dados do Notion, essa propriedade é tratada como um array das páginas vinculadas. Cada elemento do array representa uma página vinculada. Para pesquisar dentro desse array, você precisa passar a propriedade de relação como o argumento array. No entanto, você não pode acessar diretamente uma propriedade da página vinculada dentro da condição. Em vez disso, você deve primeiro criar uma propriedade de rollup que extraia o valor específico das páginas relacionadas. Essa propriedade de rollup se torna um array do mesmo comprimento, contendo os valores extraídos.

Por exemplo, suponha que você tenha um banco de dados de Tarefas com uma relação para um banco de dados de Projetos. Cada tarefa pode estar vinculada a vários projetos. Você quer verificar se algum dos projetos vinculados tem o status “Ativo”. Você criaria um rollup no banco de dados de Tarefas que puxa a propriedade Status do banco de dados de Projetos. Em seguida, na fórmula, você usa find() para testar se algum elemento desse array de rollup é igual a “Ativo”.

O pré-requisito principal é que a propriedade de rollup deve estar configurada como “Mostrar original” (não “Mostrar únicos” ou “Mostrar contagem”) para que retorne um array de todos os valores, um por página vinculada. Se o rollup estiver configurado como “Mostrar únicos”, ele pode desduplicar valores e quebrar a estrutura do array.

Passos para Construir uma Fórmula find() que Pesquise em um Array de Relação

Siga estes passos para criar uma fórmula que use find() para pesquisar em um array de relação. O exemplo assume que você tem um banco de dados de Tarefas relacionado a um banco de dados de Projetos, e você quer ver se algum projeto vinculado tem prioridade “Alta”.

  1. Crie uma propriedade de relação vinculando Tarefas a Projetos
    No seu banco de dados de Tarefas, adicione uma propriedade de Relação. Nomeie-a como “Projetos Relacionados”. Configure-a para vincular ao banco de dados de Projetos. Vincule algumas tarefas a alguns projetos para ter dados para testar.
  2. Adicione uma propriedade de rollup que puxe o valor alvo
    Adicione uma propriedade de Rollup ao banco de dados de Tarefas. Nomeie-a como “Prioridade do Projeto”. Defina a Relação como “Projetos Relacionados”. Defina a Propriedade como “Prioridade” (a propriedade em Projetos que contém o valor da prioridade). Em “Calcular”, escolha “Mostrar original”. Isso garante que o rollup retorne um array de todos os valores de prioridade dos projetos vinculados.
  3. Crie uma propriedade de fórmula para usar find()
    Adicione uma propriedade de Fórmula ao banco de dados de Tarefas. Nomeie-a como “Tem Projeto de Alta Prioridade”. Clique no editor de fórmulas.
  4. Escreva a fórmula find()
    No editor de fórmulas, digite:
    find(prop("Prioridade do Projeto") == "Alta", prop("Prioridade do Projeto"))
    Esta fórmula verifica cada elemento no array “Prioridade do Projeto”. A condição testa se o elemento é igual a “Alta”. Se algum elemento corresponder, find() retorna esse elemento (a string “Alta”). Se nenhum corresponder, retorna undefined.
  5. Teste a fórmula
    Clique em “Concluído” no editor de fórmulas. A coluna mostrará “Alta” para tarefas que têm pelo menos um projeto vinculado com prioridade “Alta”. Para tarefas sem projetos de alta prioridade, a célula ficará em branco (porque undefined é exibido como vazio).

Se você quiser um resultado booleano (verdadeiro/falso) em vez do valor correspondente, envolva o find() com a função empty() e negue. Por exemplo: !empty(find(prop("Prioridade do Projeto") == "Alta", prop("Prioridade do Projeto"))). Isso retorna true se existir uma correspondência, false caso contrário.

ADVERTISEMENT

Erros Comuns ao Usar find() com Arrays de Relação

Rollup configurado como “Mostrar únicos” em vez de “Mostrar original”

Se a propriedade de rollup estiver configurada como “Mostrar únicos”, ela pode desduplicar valores e retornar um array mais curto ou um valor único. Isso quebra a função find() porque o array não tem mais um elemento por página vinculada. Para corrigir, edite a propriedade de rollup e altere a opção Calcular para “Mostrar original”.

Usar prop(“Relação”) diretamente em find()

Você não pode usar find(condição, prop("Projetos Relacionados")) e então tentar acessar uma propriedade de cada página vinculada dentro da condição. A condição deve funcionar nos elementos do array passado como segundo argumento. Se você passar a própria relação, os elementos são os objetos da página vinculada, não suas propriedades. Você deve primeiro criar um rollup que extraia a propriedade que deseja pesquisar.

Condição referencia uma propriedade que não existe no banco de dados relacionado

Se a propriedade de rollup puxar uma propriedade que está faltando em algumas páginas relacionadas, o array pode conter valores undefined. A função find() comparará esses valores undefined com seu valor alvo, e a condição nunca será verdadeira para esses elementos. Certifique-se de que todas as páginas relacionadas tenham a propriedade alvo preenchida, ou lide com valores vazios usando verificações empty().

find() retorna undefined e a fórmula mostra um erro

As fórmulas do Notion não geram erros para resultados undefined; a célula simplesmente aparece em branco. Se você vir uma célula em branco e esperar um valor, verifique se o array de rollup contém os valores esperados. Adicione temporariamente uma propriedade de fórmula que apenas retorne prop("Prioridade do Projeto") para inspecionar o conteúdo do array.

find() com Array de Relação vs Outras Funções de Array

Item find() filter()
Valor de retorno Primeiro elemento correspondente ou undefined Array de todos os elementos correspondentes
Caso de uso Verificar se algum elemento atende a uma condição Obter todos os elementos que atendem a uma condição
Sintaxe find(condição, array) filter(condição, array)
Exemplo de saída “Alta” ou em branco [“Alta”, “Média”]
Desempenho Para na primeira correspondência Varre o array inteiro

Use find() quando você só precisa saber se uma condição é verdadeira para pelo menos um elemento. Use filter() quando precisar coletar todos os elementos correspondentes. Para verificar existência, find() é mais eficiente porque para na primeira correspondência.

ADVERTISEMENT

Conclusão

A função find() permite pesquisar em um array de relação nas fórmulas do Notion testando cada elemento contra uma condição. Você deve combiná-la com uma propriedade de rollup configurada como “Mostrar original” para criar um array dos valores que deseja pesquisar. Use o padrão find(prop("Rollup") == "Valor", prop("Rollup")) para retornar o valor correspondente ou undefined. Para um resultado booleano, envolva a expressão com !empty(). Depois de dominar find(), explore a função filter() para retornar múltiplas correspondências de um array de relação.

ADVERTISEMENT