Tutorial: Criar funções personalizadas no Excel
Funções personalizadas permitem que você adicione novas funções do Excel definindo essas funções em JavaScript como parte de um suplemento. Os usuários do Excel podem acessar funções personalizadas como fariam com qualquer função nativa no Excel, como SUM()
. Você pode criar funções personalizadas que realizam tarefas simples como cálculos ou tarefas mais complexas, como streaming de dados da web em tempo real em uma planilha.
Neste tutorial, você vai:
- Crie um suplemento de função personalizada usando o gerador Yeoman de suplementos do Office.
- Usar uma função personalizada predefinida para realizar um cálculo simples.
- Criar uma função personalizada que solicita dados da web.
- Criar uma função personalizada que transmite os dados da web em tempo real.
Pré-requisitos
Node.js (a versão mais recente de LTS). Visite o siteNode.js para baixar e instalar a versão certa para seu sistema operacional.
A versão mais recente do Yeoman e do Yeoman gerador de Suplementos do Office. Para instalar essas ferramentas globalmente, execute o seguinte comando por meio do prompt de comando.
npm install -g yo generator-office
Observação
Mesmo se você já instalou o gerador Yeoman, recomendamos atualizar seu pacote para a versão mais recente do npm.
Office conectado a uma assinatura Microsoft 365 (incluindo o Office na web).
Observação
Se você ainda não tiver o Office, poderá se qualificar para uma assinatura de desenvolvedor Microsoft 365 E5 por meio do Programa de Desenvolvedor do Microsoft 365; para obter detalhes, confira as perguntas frequentes. Como alternativa, você pode se inscrever para uma avaliação gratuita de 1 mês ou comprar um plano do Microsoft 365.
Office conectado a uma assinatura Microsoft 365 (incluindo o Office na web).
Observação
Se você ainda não tiver o Office, poderá se qualificar para uma Microsoft 365 E5 assinatura de desenvolvedor a ser usada para desenvolvimento por meio do Programa de Desenvolvedores do Microsoft 365; para obter detalhes, confira as perguntas frequentes. Como alternativa, você pode se inscrever para uma avaliação gratuita de 1 mês ou comprar um plano do Microsoft 365.
Criar um projeto com funções personalizadas
Para começar, você criará o projeto de código para criar o suplemento de função personalizada. O gerador Yeoman para suplementos do Office configura seu projeto com algumas funções personalizadas predefinidas que você pode experimentar. Se você executou a inicialização rápida de funções personalizadas e gerou um projeto, continue usando o projeto e pule para esta etapa.
Observação
Se você recriar o projeto do Yo Office, poderá receber um erro porque o cache do Office já tem uma instância de uma função com o mesmo nome. Você pode impedir isso limpando o cache Office antes de executar npm run start
.
Execute o comando a seguir para criar um projeto de suplemento usando o gerador Yeoman. Uma pasta que contém o projeto será adicionada ao diretório atual.
yo office
Observação
Ao executar o comando
yo office
, você receberá informações sobre as políticas de coleta de dados de Yeoman e as ferramentas da CLI do suplemento do Office. Use as informações fornecidas para responder às solicitações como achar melhor.Quando solicitado, forneça as informações a seguir para criar seu projeto de suplemento.
- Escolha um tipo de projeto:
Excel Custom Functions using a Shared Runtime
- Escolha um tipo de script:
JavaScript
- O que você deseja nomear seu suplemento?
My custom functions add-in
O gerador Yeoman criará os arquivos do projeto e instalará os componentes Node de suporte.
Observação
Se você estiver usando Node.js versão 20.0.0 ou posterior, poderá ver um aviso quando o gerador executar a instalação de que você tem um mecanismo sem suporte. Estamos trabalhando em uma correção para isso. Enquanto isso, o aviso não afeta o gerador ou o projeto que você gera, portanto, ele pode ser ignorado.
Dica
Você pode ignorar as orientações da próximas etapas fornecidas pelo gerador Yeoman após a criação do projeto de suplemento. As instruções passo a passo deste artigo fornecem todas as orientações necessárias para concluir este tutorial.
- Escolha um tipo de projeto:
Navegue até a pasta raiz do projeto.
cd "My custom functions add-in"
Compile o projeto.
npm run build
Observação
Os Suplementos do Office devem usar HTTPS, e não HTTP, mesmo durante o desenvolvimento. Se você for solicitado a instalar um certificado após executar
npm run build
, aceite a solicitação para instalar o certificado que o gerador do Yeoman fornecer.Inicie o servidor local da web, que é executado no Node.js. Você pode experimentar o suplemento de função personalizada no Excel.
Para testar o seu suplemento no Excel para Windows ou Mac, execute o seguinte comando. Quando você executa este comando, o servidor Web local iniciará e o Excel abrirá com o seu suplemento carregado.
npm run start:desktop
Observação
Os suplementos do Office devem usar HTTPS, não HTTP, mesmo enquanto você estiver desenvolvendo. Se você for solicitado a instalar um certificado depois de executar um dos comandos a seguir, aceite o prompt para instalar o certificado que o gerador Yeoman fornece. Você também pode executar o prompt de comando ou terminal como administrador para que as alterações sejam feitas.
Experimente uma função personalizada predefinida
O projeto de funções personalizadas criado contém algumas funções personalizadas predefinidas configuradas no arquivo src/functions/functions.js. O arquivo ./manifest.xml especifica que todas as funções personalizadas pertencem a CONTOSO
namespace. Você usará o namespace CONTOSO para acessar as funções personalizadas no Excel.
Experimentar a função personalizada ADD
preenchendo as seguintes etapas no Excel.
No Excel, vá para qualquer célula e digite
=CONTOSO
. Observe que o menu de preenchimento automático mostra a lista de todas as funções naCONTOSO
namespace.Executar a
CONTOSO.ADD
função, com números10
e200
como parâmetros de entrada, especificando o valor=CONTOSO.ADD(10,200)
na célula e pressionando enter.
As ADD
função personalizada calcula a soma dos dois números que você forneceu e retorna o resultado da 210.
Se o namespace CONTOSO
não estiver disponível no menu de preenchimento automático, siga as etapas a seguir para registrar o suplemento no Excel.
No Excel , selecione>Suplementos internos e selecione Mais Suplementos.
Na guia MEUS SUPLEMENTOS , selecione Gerenciar Meus Suplementos e escolha Carregar Meu Suplemento.
Escolha Procurar... e navegue até o diretório raiz do projeto criado pelo gerador Yeoman.
Selecione o arquivo manifest. XML e escolha abrir, escolha Carregar.
Agora, vamos experimentar a nova função. Na célula B1, digite o texto =CONTOSO. GETSTARCOUNT("OfficeDev", "Excel-Custom-Functions") e pressione Enter. Você deve ver que o resultado na célula B1 é o número atual de estrelas fornecido para o repositório do GitHub de funções personalizadas do Excel.
Observação
Consulte a seção Solução de problemas deste artigo se você encontrar erros ao carregar o suplemento.
Criar uma função personalizada que solicita dados da web
Integração de dados da Web é uma ótima maneira de ampliar o Excel por meio de funções personalizadas. Em seguida, você criará uma função personalizada chamada getStarCount
que mostra quantas estrelas um determinado repositório do GitHub tem.
No projeto O meu suplemento de funções personalizadas localize o arquivo ./src/functions/functions.js e abra-o no editor de código.
Em function.js, adicione o código a seguir.
/** * Gets the star count for a given Github repository. * @customfunction * @param {string} userName string name of Github user or organization. * @param {string} repoName string name of the Github repository. * @return {number} number of stars given to a Github repository. */ async function getStarCount(userName, repoName) { try { //You can change this URL to any web request you want to work with. const url = "https://api.github.com/repos/" + userName + "/" + repoName; const response = await fetch(url); //Expect that status code is in 200-299 range if (!response.ok) { throw new Error(response.statusText) } const jsonResponse = await response.json(); return jsonResponse.watchers_count; } catch (error) { return error; } }
Execute o seguinte comando para recriar o projeto.
npm run build
Execute as etapas a seguir (para o Excel na Web, Windows ou Mac) para registrá-lo novamente no Excel. Você deve concluir essas etapas antes que a nova função esteja disponível.
Feche o Excel e abra-o novamente.
Na faixa de opções do Excel , selecione>Suplementos internos.
Na seção Suplementos do Desenvolvedor , selecione Meu suplemento de funções personalizadas para registrá-lo .
Agora, vamos experimentar a nova função. Na célula B1, digite o texto =CONTOSO. GETSTARCOUNT("OfficeDev", "Office-Add-in-Samples") e pressione Enter. Você deve ver que o resultado na célula B1 é o número atual de estrelas fornecidas ao repositório Office-Add-in-Samples.
Observação
Consulte a seção Solução de problemas deste artigo se você encontrar erros ao carregar o suplemento.
Criar uma função personalizada assíncrona de streaming
A função getStarCount
retorna o número de estrelas que um repositório tem em um determinado momento. As funções personalizadas também retornam dados que estão sendo alterados continuamente. Essas funções são chamadas de funções de streaming. Elas devem incluir um parâmetro invocation
que se refere à célula que chamou a função. O parâmetro invocation
é usado para atualizar o conteúdo da célula a qualquer momento.
No exemplo de código a seguir, você perceberá que há duas funções, currentTime
e clock
. A função currentTime
é uma função estática que não usa streaming. Ele retorna a data como uma cadeia de caracteres. A função clock
usa a função currentTime
para fornecer o novo horário a cada segundo a uma célula no Excel. Ela usa invocation.setResult
para fornecer o horário para a célula do Excel e invocation.onCanceled
para controlar o que acontece quando a função é cancelada.
O projeto Meus suplementos de funções personalizadas já contém as duas funções a seguir no arquivo ./src/functions/functions.js.
/**
* Returns the current time
* @returns {string} String with the current time formatted for the current locale.
*/
function currentTime() {
return new Date().toLocaleTimeString();
}
/**
* Displays the current time once a second
* @customfunction
* @param {CustomFunctions.StreamingInvocation<string>} invocation Custom function invocation
*/
function clock(invocation) {
const timer = setInterval(() => {
const time = currentTime();
invocation.setResult(time);
}, 1000);
invocation.onCanceled = () => {
clearInterval(timer);
};
}
Para experimentar as funções, digite o texto =CONTOSO. CLOCK() na célula C1 e pressione Enter. Você deverá ver a data atual, que transmite uma atualização a cada segundo. Embora esse relógio seja um cronômetro em um loop, você pode usar a mesma ideia para definir um cronômetro em funções mais complexas que fazem solicitações da Web para dados em tempo real.
Solução de problemas
Você pode encontrar problemas se executar o tutorial várias vezes. Se o Office cache já tiver uma instância de uma função com o mesmo nome, o seu complemento obtém um erro quando ele é sideload.
Você pode evitar esse conflito desmarcando o cache do Office antes de executar npm run start
. Se o processo npm já estiver em execução, insira npm stop
, desmarque o cache do Office e reinicie o npm.
Próximas etapas
Parabéns! Neste tutorial, você criou um novo projeto de funções personalizadas, experimentou uma função predefinida, criou uma função personalizada que solicita dados da Web e criou uma função personalizada que transmite dados. Em seguida, saiba como compartilhar dados de função personalizados com o painel de tarefas.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de