Construir
Funções
Uma função transforma uma ligação numa fórmula que os teus utilizadores podem escrever. Constró-la no dashboard — escolhes uma ligação, moldas as entradas e a saída, dás-lhe um módulo e um nome — e o agent serve-a como uma função personalizada de Excel. Sem código, sem ficheiro de metadados escrito à mão.
7 min de leitura
Cada função mapeia para uma fórmula sob o espaço de nomes CONNXL, endereçada pelo seu módulo e nome:
=CONNXL.SALES.TOP_CUSTOMERS(10)Formas do resultado
A forma do resultado de uma função decide o aspeto que o resultado tem assim que chega à grelha — escolhe-la no construtor. (Separadamente, o tipo de uma função — a espécie de fonte de dados contra a qual corre — é definido quando escolhes uma ligação; a Referência de funções lista-os todos.)
- Valor único — um valor na célula que chama: um número, uma string, um booleano.
- Linha — um único registo disposto ao longo de uma linha de células.
- Tabela — linhas × colunas que derramam para um intervalo, com cabeçalhos por coluna e formatos numéricos mapeados a partir da resposta.
- JSON — a resposta JSON em bruto como texto, para quando queres analisá-la tu mesmo.
- Entidade — um tipo de dados ligado de Excel: um chip na célula cujas propriedades se tornam acessores de campo como
=A2.Price. Apenas async.
Modelos de execução
- Sync — uma operação local de Excel, executada no suplemento sem chamada ao agent. Melhor para transformações leves.
- Async — o padrão. O Excel mostra
#GETTING_DATAenquanto o agent obtém; o suplemento agrupa muitas chamadas de célula num só pedido de forma transparente. - Streaming — a célula atualiza-se ao vivo à medida que chegam novos valores. O agent faz stream para o suplemento por Server-Sent Events no desktop, e recorre a polling no Excel para a web.
Constrói-a no dashboard
O construtor de funções guia-te pela escolha de uma ligação, a declaração dos parâmetros, a escrita da consulta ou do pedido, e o mapeamento da resposta para o tipo de saída que escolheste. Não há ficheiro JSON para escrever à mão — o dashboard é dono dos metadados, e o agent gera tudo o que o Excel precisa a partir da tua configuração.
Guarda a função e depois publica-a
Guardar uma função armazena um rascunho. Não chega ao agent até guardares uma versão ativa do ambiente (a página Versions do ambiente → Make this version live). Depois dessa publicação, o agent volta a extrair pelo seu canal em streaming e o novo comportamento é servido na chamada seguinte — sem reinício. O Excel só volta a registar um nome de função novo ou removido quando o manifesto é reingerido; as edições ao comportamento de uma função existente são imediatas assim que publicadas.
Um exemplo prático
Imagina que tens uma ligação REST chamada Catalog API e queres os teus produtos principais como uma tabela derramada:
- What it does — Fetch data. Basic info — nome
TOP_PRODUCTS, móduloCATALOG. - Connection — Catalog API. Request —
GET /products, parâmetro de consultalimit = 10. - Output — Table / Matrix. Caminho das linhas
$.data[*]; colunasName → $.name,SKU → $.sku,Price → $.price. - Guarda e depois publica o ambiente. No Excel:
=CATALOG.TOP_PRODUCTS()derrama a tabela.
Um valor único funciona da mesma forma com a saída JSON path — por ex. GET /products/{'{{'}id{'}}'} com um parâmetro id numérico e o caminho data.name devolve o nome de um produto. Uma função de base de dados é idêntica, exceto que o passo do pedido é uma instrução SQL (SELECT name, total FROM orders ORDER BY total DESC) contra uma ligação Postgres/MySQL/SQL Server.
Um exemplo de fórmula sync
Para as funções de cálculo local (sync), o passo de "parâmetros" torna-se num editor de fórmulas: sem ligação, sem pedido, nada a que o agent precise de chamar. Escreve-a na sintaxe habitual do Excel, e o dashboard compila-a na árvore de expressão exata que o avaliador isolado do agent executa na célula, sem nunca tocar numa fonte de dados:
=CONCAT(UPPER([name]), " — ", [id])Cada referência entre [parênteses retos] torna-se num parâmetro da função, pela ordem em que aparece pela primeira vez — não há mais nada a declarar. O conjunto de funções suportadas é fechado e deliberadamente pequeno, para poder ser isolado com segurança: texto (CONCAT/CONCATENATE, UPPER, LOWER, TRIM, LEN, LEFT, RIGHT, MID, SUBSTITUTE), matemática (MOD, ROUND, ABS, MIN, MAX, além dos operadores habituais + - * /), comparações (= < > <= >= <>) e lógica (IF, AND, OR, NOT, COALESCE), e partes de data (YEAR, MONTH, DAY). & concatena, tal como no Excel.
Porque é que uma fórmula sync não pode chamar uma ligação
Uma fórmula sync corre inteiramente dentro do suplemento — não há pedido, logo também não há nada contra o qual o passo Test possa correr no agent. É isso que a torna instantânea: sem ida e volta, sem cache, sem limite de taxa. Para o que precisar de uma fonte de dados real, usa async ou streaming.
Mapear uma resposta de tabela ou entidade
Quando o resultado é Tabela ou Entidade, o passo Output inclui um amostrador para não teres de adivinhar o JSONPath à mão:
- Fetch a sample response — corre o teu pedido uma vez, ao vivo, contra a ligação real, e mostra-te o JSON real que chega.
- Clica nos campos que queres — a amostra é analisada numa lista plana de campos candidatos; ao clicares num, adicionas-o como coluna (ou propriedade de entidade) e o caminho é preenchido por ti.
- Se a resposta contiver mais do que uma lista plausível de linhas — um array aninhado, um envelope — um seletor de linha candidata deixa-te escolher qual é "a tabela"; a lista de campos atualiza-se para o candidato que escolheres.
- Uma pré-visualização ao vivo apresenta as primeiras linhas como uma tabela real, para poderes verificar o mapeamento antes de guardares.
{
"data": [
{ "name": "Widget", "sku": "W-100", "price": 19.99 },
{ "name": "Gadget", "sku": "G-200", "price": 34.5 }
]
}Obter uma amostra como esta deteta $.data[*] como o caminho das linhas e oferece name, sku e price como colunas de um clique.
Escrever dados de volta
A maioria das funções lê. Algumas ligações também sabem escrever, e o primeiro passo do construtor oferece a operação de escrita ao lado de Fetch data quando a ligação a admite — transformando o livro num cliente de carregamento em vez de um relatório.
- Bases de dados SQL — Inserir linhas. Escolhes a tabela de destino e o parâmetro que leva as linhas, e o agent monta por ti um
INSERTparametrizado de várias linhas. Funciona em todos os motores com pool, Supabase incluído. Aqui não há SQL de texto livre: os nomes de tabela e de coluna têm de ser identificadores simples, e os valores viajam como parâmetros vinculados, por isso um cabeçalho do livro nunca se pode tornar uma instrução. - MongoDB —
insertOne,insertMany,updateManyedeleteManysobre uma coleção. - DynamoDB —
put_itempara um único objeto,put_itemspara um array inteiro. - Cosmos DB —
upsertescreve as linhas num contentor.
Uma escrita nunca é uma fórmula de célula
As funções de escrita são só de taskpane, e nelas a cache e o volatile são recusados. É o modelo de recálculo do Excel, não uma política: uma função personalizada numa célula volta a correr sempre que o livro recalcula, por isso uma escrita ali dispararia outra vez em silêncio, multiplicando as linhas que inseriu. Em vez disso, os utilizadores lançam uma escrita a partir do taskpane — um botão de função, ou o bloco Upload range, que lê a seleção deles e a envia em blocos.
Os carregamentos são seguros de repetir. Cada clique cunha uma identidade de carregamento que todos os blocos levam, e os conetores usam-na para substituir em vez de acrescentar: o insert SQL carimba as linhas e troca o bloco numa única transação, o Cosmos deriva dela os seus ids de documento, o DynamoDB sobrescreve pela chave da tabela. Assim, voltar a clicar depois de uma falha parcial repara o carregamento em vez de o duplicar. Se em vez disso carregares para a tua própria API, as variáveis de modelo ${upload.*} dão-te essa mesma identidade para desduplicar — vê a Referência de funções.
Testar uma função
Test diz aprovado ou falhado — nunca o dado
O passo Test corre a tua função contra o agent e mostra apenas um veredito de aprovado ou falhado. Nunca mostra (nem devolve ao dashboard) o valor que a função produziu — é deliberado, para que testar uma função sobre dados sensíveis não possa vazar esses dados para o dashboard. Se precisares de ver a forma real da resposta — por exemplo enquanto mapeias as colunas de uma tabela — usa Fetch a sample response no passo Output; essa é uma ação separada, a que é permitido mostrar-te dados.
Versionamento e Promover
As funções são editadas apenas no ambiente fonte (Development). Quando estás pronto para levar uma alteração adiante, Promove-a para um ambiente a jusante — QA, staging, produção. Promover copia a estrutura preservando os valores próprios de ligação do ambiente-alvo, e os recursos novos chegam com credenciais em branco para tu preencheres. Podes promover a partir da configuração ao vivo de um ambiente irmão ou de uma versão nomeada guardada, por isso os lançamentos são repetíveis.
Ligações
Uma ligação aponta o agent a uma das tuas fontes de dados. O ConnXL inclui conectores para vinte e nove tipos de fonte em oito categorias — muito mais do que bases de dados e REST — e o agent resolve cada credencial no momento da execução, dentro da tua rede.
Referência de recursos do Excel
Além das funções, um ambiente pode conter dez tipos de artefacto do Excel — gráficos, tabelas, diálogos, formatação e mais — que o agent aplica em direto a partir da configuração. Esta página cobre os dez, em profundidade para os três mais inovadores (gráficos, vistas de grelha, diálogos) e de forma direta para o resto.