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.
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()
- 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. Useat(prop("Tags"), 0)em vez deat(prop("Tags"), "0"). - 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. - Confirme que o array tem elementos suficientes
Use a funçãolength()para obter o tamanho do array. Escreva uma fórmula de teste comolength(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. - Teste com um array estático
Substitua a propriedade dinâmica por um array estático para isolar o problema. Escrevaat(["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. - 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 comif()eempty()para tratar esse caso. Exemplo:if(empty(prop("Tags")), "Sem tags", at(prop("Tags"), 0)).
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.