Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Crie um suplemento do Excel que forneça funções personalizadas de JavaScript juntamente com funções internas, como SUM. Você criará funções que executam um cálculo, recuperam dados da Web e transmitem atualizações em tempo real para uma planilha.
Neste tutorial, você:
- Crie um suplemento de função personalizada usando o gerador Yeoman para 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 LTS ativa mais recente). Visite o site doNode.js para baixar e instalar a versão correta para o 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-officeObservaçã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 tem o Office, você pode se qualificar para uma assinatura de desenvolvedor do Microsoft 365 E5 por meio do Programa de Desenvolvedor do Microsoft 365. Para obter detalhes, consulte as Perguntas frequentes. Como alternativa, você pode se inscrever para uma avaliação gratuita de 1 mês ou adquirir um plano do Microsoft 365.
Criar um projeto com funções personalizadas
Crie o projeto de código para seu suplemento de função personalizado. O gerador Yeoman para Suplementos do Office configura o projeto com funções personalizadas predefinidas para experimentar. Se você já gerou um projeto no início rápido de funções personalizadas, use esse projeto e continue em Criar uma função personalizada que solicita dados da Web.
Observação
Se você recriar o projeto Yo Office, poderá receber um erro porque o cache do Office já tem uma instância de uma função com o mesmo nome. Para evitar esse erro, limpe o cache do Office antes de executar npm run starto .
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 officeObservaçã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 -
Como você deseja nomear seu suplemento?
My custom functions add-in
O gerador Yeoman cria os arquivos de projeto e instala os componentes de suporte do Node.
-
Escolha um tipo de projeto:
Vá para a pasta raiz do projeto.
cd "My custom functions add-in"Compile o projeto.
npm run buildObservação
Os Suplementos do Office devem usar HTTPS, não HTTP, mesmo durante o desenvolvimento. Se for solicitado que você instale um certificado após a execução
npm run build, aceite o prompt para instalar o certificado fornecido pelo gerador Yeoman.Inicie o servidor local da web, que é executado no Node.js. Você pode experimentar o suplemento de função personalizada no Excel.
O comando para testar seu suplemento no Excel no Windows ou Mac depende de quando você criou o projeto. Se a "scripts" seção do arquivo de package.json do projeto tiver um start:desktop script, execute npm run start:desktop. Caso contrário, execute npm run starto . O servidor Web local é iniciado e o Excel é aberto com o suplemento carregado.
Observação
Os suplementos do Office devem usar HTTPS, não HTTP, mesmo durante o desenvolvimento. Se você for solicitado a instalar um certificado depois de executar um dos comandos a seguir, aceite a solicitação para instalar o certificado fornecido pelo gerador Yeoman. Você também pode executar o prompt de comando ou terminal como administrador para que as alterações sejam feitas.
Se esta é a primeira vez que você desenvolve um Suplemento do Office em seu computador, você pode ser solicitado na linha de comando a conceder ao Microsoft Edge WebView uma isenção de loopback ("Permitir loopback de localhost para o Microsoft Edge WebView?"). Quando solicitado, entre
Ypara permitir a isenção. Observe que você precisará de privilégios de administrador para permitir a isenção. Depois de permitido, você não deve ser solicitado a fornecer uma isenção ao fazer sideload de Suplementos do Office no futuro (a menos que remova a isenção do seu computador). Para saber mais, consulte "Não é possível abrir este suplemento do host local" ao carregar um suplemento do Office ou usar o Fiddler.
Quando você usa o gerador Yeoman pela primeira vez para desenvolver um suplemento do Office, seu navegador padrão abre uma janela onde você será solicitado a entrar em sua conta do Microsoft 365. Se uma janela de entrada não aparecer e você encontrar um erro de sideload ou tempo limite de login, execute
atk auth login m365.
Experimentar uma função personalizada predefinida
O projeto contém funções personalizadas pré-criadas em ./src/functions/functions.js. O arquivo ./manifest.xml os atribui ao CONTOSO namespace, que você usa para acessar as funções no Excel.
Em seguida, experimente a ADD função personalizada concluindo as etapas a seguir.
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 naCONTOSOnamespace.Insira
=CONTOSO.ADD(10,200)na célula e selecione Enter.
A ADD função personalizada retorna 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.
Selecione Suplementos da Página Inicial> e,em seguida, selecione Mais Configurações.
Na caixa de diálogo Suplementos do Office , selecione 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 fazer o sideload do suplemento.
Criar uma função personalizada que solicita dados da web
A integração de dados da Web é uma ótima maneira de estender o Excel por meio de funções personalizadas. Crie uma getStarCount função personalizada que recupere o número de estrelas para um repositório GitHub.
No projeto do suplemento Minhas funções personalizadas , abra ./src/functions/functions.js no editor de códigos.
Em functions.js, adicione o seguinte código.
/** * Gets the star count for a GitHub repository. * @customfunction * @param {string} userName GitHub user or organization name. * @param {string} repoName GitHub repository name. * @returns {number} Number of stars given to the GitHub repository. */ async function getStarCount(userName, repoName) { try { const url = `https://api.github.com/repos/${userName}/${repoName}`; const response = await fetch(url); if (!response.ok) { throw new Error(response.statusText); } const jsonResponse = await response.json(); return jsonResponse.stargazers_count; } catch (error) { throw new CustomFunctions.Error(CustomFunctions.ErrorCode.notAvailable, String(error)); } }Execute o seguinte comando para recriar o projeto.
npm run buildExecute 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 do Excel, selecioneSuplementos daPágina Inicial>.
Na seção Suplementos do Desenvolvedor , selecione Meu suplemento de funções personalizadas para registrá-lo.
Na célula B1, insira
=CONTOSO.GETSTARCOUNT("OfficeDev", "Office-Add-in-Samples")e selecione Enter. A célula exibe o número atual de estrelas para o repositório Office-Add-in-Samples.
Observação
Consulte a seção Solução de problemas deste artigo se você encontrar erros ao fazer o sideload do suplemento.
Criar uma função personalizada assíncrona de streaming
A getStarCount função retorna o número de estrelas em um momento específico. Uma função de streaming, por outro lado, pode atualizar uma célula repetidamente. Ele inclui um invocation parâmetro que representa a célula que chamou a função.
O exemplo a seguir contém duas funções.
currentTime Retorna a hora atual como uma cadeia de caracteres. A função de streaming clock é chamada invocation.setResult para atualizar a célula a cada segundo e é usada invocation.onCanceled para interromper o temporizador quando o Excel cancela a função.
O projeto do suplemento Minhas funções personalizadas já contém essas funções em ./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 a função de streaming, insira =CONTOSO.CLOCK() na célula C1 e selecione Enter. A célula exibe a hora atual e as atualiza a cada segundo. Você pode usar o mesmo padrão de temporizador com funções que solicitam dados em tempo real da Web.
Solução de problemas
Você poderá 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.
Para evitar esse conflito, limpe o cache do Office antes de executar npm run start. Se o processo npm já estiver em execução, insira npm run stop, limpe o cache do Office e reinicie o npm.
Próximas etapas
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 personalizada com o painel de tarefas.