Por que a função at() do Notion retorna vazio em um índice de array válido
🔍 WiseChecker

Por que a função at() do Notion retorna vazio em um índice de array válido

Você tem uma fórmula no Notion que usa a função at() para recuperar um elemento de um array. O array contém dados válidos e o índice passado está dentro dos limites. Mesmo assim, a fórmula retorna um valor vazio em vez do elemento esperado. Esse problema ocorre porque os arrays de fórmulas do Notion são indexados a partir de zero e a função at() tem um comportamento específico quando o índice é um número versus uma string. Este artigo explica as condições exatas que fazem at() retornar vazio e fornece as etapas para corrigir sua fórmula.

Principais conclusões: corrigindo a função at() do Notion

  • Incompatibilidade de tipo de índice: at() retorna vazio quando você passa um índice string em vez de um índice numérico para um array.
  • Indexação baseada em zero: O primeiro elemento está no índice 0, não 1. Usar o índice 1 retorna o segundo elemento.
  • Índice inexistente: Mesmo que o array tenha itens, um índice igual ou maior que o comprimento do array retorna vazio.

ADVERTISEMENT

Por que a função at() retorna vazio em um índice de array válido

A função at() nas fórmulas do Notion extrai um elemento de um array em um determinado índice. A sintaxe da fórmula é at(array, indice). A função espera que o índice seja um número. Se você passar uma string que parece um número, o Notion não a converte automaticamente. O índice deve ser uma expressão numérica, não um valor de texto.

Uma segunda causa é a indexação baseada em zero. O primeiro elemento de um array está no índice 0. Se você escrever at(["a","b","c"], 1), o resultado será “b”, não “a”. Usuários novos na indexação baseada em zero geralmente esperam que o índice 1 retorne o primeiro elemento e se surpreendem quando o resultado é o segundo elemento. Isso não é um bug, mas uma escolha de design compartilhada por muitas linguagens de programação.

Uma terceira causa é um índice que é válido em tamanho, mas se refere a uma posição que não existe. Por exemplo, um array de três elementos tem índices válidos 0, 1 e 2. O índice 3 está fora dos limites e retorna vazio. O mesmo acontece se o array estiver vazio. A função at() não tem como retornar um valor quando o índice está além do último elemento.

Etapas para corrigir a fórmula com a função at()

  1. Verifique o tipo do índice
    Abra o editor de fórmulas. Observe o segundo argumento da função at(). Se o índice for uma string como “0” ou “2”, altere para um número removendo as aspas. Use at(prop("Tags"), 0) em vez de at(prop("Tags"), "0").
  2. Confirme que o índice é baseado em zero
    Se você deseja o primeiro elemento, use o índice 0. Para o segundo elemento, use o índice 1. Para o terceiro, use o índice 2. Verifique sua fórmula em relação a essa regra. Se você usou anteriormente o índice 1 esperando o primeiro elemento, altere para 0.
  3. Confirme que o array tem elementos suficientes
    Use a função length() para obter o tamanho do array. Escreva uma fórmula de teste como length(prop("Tags")) e veja o resultado. Se o comprimento for 3, os índices válidos são 0, 1 e 2. Se seu índice for 3 ou maior, reduza para um número válido.
  4. Teste com um array estático
    Substitua a propriedade dinâmica por um array estático para isolar o problema. Escreva at(["a","b","c"], 0) e veja se retorna “a”. Se retornar, o problema está na propriedade de origem, não na função at(). Se retornar vazio, verifique a sintaxe da fórmula em busca de erros de digitação.
  5. Verifique se o array está vazio
    Se a propriedade de origem produzir um array vazio, at() retorna vazio independentemente do índice usado. Adicione uma condição com if() e empty() para tratar esse caso. Exemplo: if(empty(prop("Tags")), "Sem tags", at(prop("Tags"), 0)).

ADVERTISEMENT

Se at() ainda retornar vazio após a correção principal

A fórmula retorna vazio, mas o array tem itens

A propriedade que você está usando pode não ser um array. Propriedades do Notion como Multi-Select e Rollup podem produzir arrays. Uma propriedade de texto simples não produz. Verifique o tipo da propriedade no esquema do banco de dados. Se a propriedade for texto ou número, envolva-a em split() para criar um array primeiro. Exemplo: at(split(prop("Tags"), ", "), 0).

O índice é um número calculado que resulta em um não inteiro

Se o índice for o resultado de uma fórmula, pode produzir um decimal como 1,5. A função at() trunca o decimal e usa a parte inteira. Isso pode causar resultados vazios inesperados se o valor truncado estiver fora dos limites. Use floor() ou ceil() explicitamente para controlar o arredondamento. Exemplo: at(prop("Items"), floor(prop("Index"))).

Arrays aninhados causam confusão de índice

Se sua propriedade for um rollup que retorna um array de arrays, at() extrai o array interno, não um valor único. Por exemplo, at(prop("Rollup"), 0) retorna um array, não um escalar. Para obter um escalar, use at(at(prop("Rollup"), 0), 0) para alcançar o elemento mais interno.

Comportamento da função at(): índice numérico vs índice string

Item Índice numérico Índice string
Exemplo de fórmula at(["a","b"], 0) at(["a","b"], "0")
Resultado “a” vazio
Tipo do índice Número Texto
Conversão necessária Nenhuma Remova as aspas ou use toNumber()

A tabela mostra que um índice string sempre retorna vazio. O Notion não converte strings em números na função at(). Sempre passe um valor numérico.

Agora você pode identificar e corrigir as três principais causas de um resultado vazio em at(): um índice string, um índice errado baseado em zero ou um índice fora dos limites. Comece verificando o tipo do índice e o comprimento do array. Use as funções length() e empty() para depurar sua fórmula. Para arrays aninhados ou índices calculados, aplique os padrões avançados descritos acima. Essa abordagem eliminará o retorno vazio e tornará suas fórmulas confiáveis.

ADVERTISEMENT