Office Dev Scripts
Office Dev Scripts
Office Dev Scripts
Visão Geral
Saiba mais sobre os componentes dos Scripts do Office no Excel: o
Gravador de Ações e o Editor de Código.
Introdução
Crie e formate uma tabela com scripts do Office.
Exemplos
Experimente esses scripts e fluxos do Power Automate para ver scripts do Office em
ação.
Outros recursos
Use os recursos a seguir para saber mais sobre as APIs de Scripts do Office, fazer
perguntas sobre scripts do Office ou solicitar recursos para Scripts do Office.
Scripts do Office
Referência da API
Fundamentos de script
Configurações do administrador
Tire dúvidas
Scripts do Office no Excel
Artigo • 27/01/2024
Os Scripts do Office no Excel permitem automatizar suas tarefas diárias. Use o Gravador
de Ações para transformar etapas manuais em scripts reutilizáveis. Edite esses scripts ou
crie novos com o Editor de Código. Deixe que outras pessoas na pasta de trabalho
executem esses scripts com um único botão. Em seguida, compartilhe-os com colegas
de trabalho para que todos possam melhorar seu fluxo de trabalho.
Esta série de documentos ensina como usar essas ferramentas. Você encontrará uma
riqueza de exemplos que abrangem diferentes cenários do Excel. Use os tutoriais para
se apresentar ao Gravador de Ações e ao Editor de Código. Elas fornecem diretrizes
passo a passo sobre como registrar suas ações frequentes do Excel, editar esses scripts e
criar novos scripts do zero.
https://www.microsoft.com/pt-br/videoplayer/embed/RE4qdFF?
postJsllMsg=true&autoCaptions=pt-br
Como exemplo, imagine no início de cada dia de trabalho que você abre um arquivo
.csv de um site de contabilidade no Excel. Então você gasta alguns minutos excluindo
colunas desnecessárias, formatando uma tabela, adicionando fórmulas e criando uma
tabela dinâmica em uma nova planilha. As ações repetidas diariamente podem ser
gravadas uma vez com o Gravador de ações. A partir daí, a execução do script cuidará
da sua conversão .csv. Além de remover o risco de esquecer as etapas, você poderá
compartilhar seu processo com outras pessoas sem precisar ensinar nada a elas. Os
Scripts do Office permitem que você automatize suas tarefas comuns para que você e
seu local de trabalho possam ser mais eficientes e produtivos.
Gravador de ações
O Gravador de Ações registra as ações que você executa no Excel e as salva na forma de
um script. Com o Gravador de ações em execução, você pode capturar as ações do Excel
enquanto edita células, altera a formatação e cria tabelas. O script resultante pode ser
executado em outras planilhas e pastas de trabalho para recriar suas ações originais.
Editor de códigos
Use o Editor de Código para editar scripts gravados com o Gravador de Ação ou fazer
um script novo. Essa ferramenta permite ajustar e personalizar scripts para atender
melhor às suas necessidades exatas. Você também pode adicionar lógica e
funcionalidade que não são acessíveis de forma direta pela interface do usuário do
Excel, como instruções condicionais (se/senão) e loops.
Dica
O Gravador de Ações tem um botão Copiar como código para registrar as ações
no código do script sem salvar o script inteiro.
Nossos tutoriais fornecem uma maneira orientada e estruturada de aprender as
funcionalidades dos Scripts do Office. Depois de concluir os tutoriais, leia Fundamentos
para Scripts do Office no Excel para saber mais sobre o Editor de Código e como
escrever e editar seus próprios scripts. Para informações adicionais sobre o Editor de
Código e como seu código de script é interpretado, leia Ambiente do Editor de Código
de Scripts do Office.
Adicione botões que executam scripts para ajudar seus colegas a descobrir suas
soluções valiosas e permitir que eles executem scripts diretamente da pasta de trabalho.
Saiba mais sobre os botões de script em Executar Scripts do Office com botões.
7 Observação
Para agendar um script, abra o script no Editor de Código. Abra a seção Agendamento
de script e conclua o processo de entrada no Excel por meio do Power Automate.
Defina com que frequência deseja que o script seja executado e selecione Criar fluxo
para começar.
Próximas etapas
Conclua o tutorial Scripts do Office no Excel para saber como criar seu primeiro script.
Confira também
Fundamentos para scripts do Office no Excel
Referência da API de scripts do Office
Limites e requisitos da plataforma com scripts do Office
Configurações dos scripts do Office no M365
Compartilhamento de Scripts do Office no Excel
6 Colaborar conosco no
GitHub Comentários do Office Scripts
O Office Scripts é um projeto código aberto.
A fonte deste conteúdo pode
Selecione um link para fornecer
ser encontrada no GitHub, onde
comentários:
você também pode criar e
revisar problemas e solicitações
Abrir um problema de documentação
de pull. Para obter mais
informações, confira o nosso
Fornecer comentários sobre o produto
guia para colaboradores.
Tutorial: Criar e formatar uma tabela do
Excel
Artigo • 17/11/2023
Pré-requisitos
Você precisará de acesso aos Scripts do Office para este tutorial. Examine o suporte da
Plataforma se a guia Automatizar não aparecer.
) Importante
3. Abra a guia Automação. Se você não vir a guia Automação, verifique o excedente
da faixa de opções selecionando a seta suspensa. Se ainda não estiver lá, siga o
conselho do artigo Solução de Problemas de Scripts do Office .
Sua planilha deve ficar assim (não se preocupe se a cor for diferente):
TypeScript
selectedSheet.getRange("A2:C2").getFormat().getFill().setColor("FFC000"
);
}
Este código recebe a planilha atual da pasta de trabalho. Depois, defina a cor de
preenchimento do intervalo A2:C2.
Os intervalos são parte fundamental dos Scripts do Office no Excel. Um intervalo é
um bloco retangular e contíguo de células que contém valores, fórmula e
formatação. Eles são a estrutura básica das células através da qual você executará
a maioria das tarefas de script.
3. Adicione a seguinte linha no final do script (entre onde color está definido e o
encerramento } ):
TypeScript
selectedSheet.getRange("A3:C3").getFormat().getFill().setColor("yellow"
);
4. Teste o script selecionando Executar. Sua pasta de trabalho já deve ter esta
aparência:
TypeScript
2. Essa chamada retorna um Table objeto. Use essa tabela para classificar os dados.
Classifique os dados em ordem crescente com base nos valores na coluna "Fruit".
Adicione a seguinte linha assim que criar a tabela:
TypeScript
selectedSheet.getRange("A2:C2").getFormat().getFill().setColor("FFC000"
);
selectedSheet.getRange("A3:C3").getFormat().getFill().setColor("yellow"
);
let table = selectedSheet.addTable("A1:C5", true);
table.getSort().apply([{ key: 0, ascending: true }]);
}
método utiliza uma matriz de SortField objetos. Nesse caso, você só tem um
critério de classificação, portanto, você só usa um SortField . key: 0 define a
coluna com os valores que determinam a classificação como "0" (que nesse caso, é
a primeira coluna na tabela A ). ascending: true classifica os dados em ordem
crescente (em vez de ordem decrescente).
7 Observação
Reexecute o script
1. Crie uma nova planilha na pasta de trabalho atual.
2. Copie os dados das frutas do início do tutorial e cole-os na nova planilha,
começando na célula A1.
3. Execute o script.
Próximas etapas
Tutorial completo: limpar e normalizar dados da pasta de trabalho do Excel. Ele ensina
como ler dados de uma pasta de trabalho com um script do Office.
Tutorial: Limpar e normalizar dados da
pasta de trabalho do Excel
Artigo • 29/11/2023
Este tutorial ensina como ler dados de uma pasta de trabalho com um Script do Office
para Excel. Você estará escrevendo um novo script que formatará um extrato bancário e
normalizará os dados desse extrato. Como parte desta limpeza de dados, seu script lerá
os valores das células de transação, aplicará uma fórmula simples a cada valor e gravará
a resposta resultante na pasta de trabalho. A leitura os dados da pasta de trabalho
permite a automatização de alguns dos seus processos de tomada de decisão no script.
Dica
Se você for novo em Scripts do Office, recomendamos começar com Tutorial: Criar
e formatar uma tabela do Excel. Os Scripts do Office usam TypeScript e este
tutorial se destina a pessoas com conhecimento de nível iniciante a intermediário
em JavaScript ou TypeScript. Se você é novo no JavaScript, recomendamos começar
com o tutorial da Mozilla sobre JavaScript .
Pré-requisitos
Você precisará de acesso aos Scripts do Office para este tutorial. Examine o suporte da
Plataforma se a guia Automatizar não aparecer.
Comece fazendo um script que lê dados e age com base no que foi lido. Ao longo do
tutorial, você trabalhará com uma instrução bancária de exemplo. Essa instrução é um
relatório combinado de verificação de crédito. Infelizmente, o banco informa que o
saldo muda de forma diferente. A declaração de verificação exibe o rendimento como
crédito positivo e custos como débito negativo. O demonstrativo de crédito faz o
oposto.
Ao longo do restante do tutorial, você normalizará esses dados usando um script.
Primeiro, você precisa ler dados da pasta de trabalho.
1. Crie uma nova planilha na pasta de trabalho usada para o resto do tutorial.
ノ Expand table
4. Limpe a formatação. Este é um documento financeiro, portanto, faça com que seu
script altere a formatação de número nas colunas Débito e Crédito para mostrar
valores como valores em dólar. Também faça com que o script ajuste a largura da
coluna aos dados.
TypeScript
TypeScript
6. Execute o script.
1. Use getValue e setValue métodos para alterar o valor da célula. Esses métodos
funcionam em uma única célula. Ao lidar com intervalos de várias células, use
getValues e setValues . Adicione o código a seguir ao final do script.
TypeScript
// Run the `Math.abs` method with the value at D2 and apply that value
back to D2.
let positiveValue = Math.abs(range.getValue() as number);
range.setValue(positiveValue);
7 Observação
1. Remova o código que afeta apenas uma única célula (o código de valor absoluto
anterior), de modo que o script agora se pareça com este:
TypeScript
2. Adicione um loop que percorra as linhas nas duas últimas colunas. Para cada
célula, o script define o valor para o valor absoluto do valor atual.
Observe que a matriz que define a localização das células é baseada em zero. Isso
significa que a célula A1 é range[0][0] .
TypeScript
// Get the values of the used range.
let range = selectedSheet.getUsedRange();
let rangeValues = range.getValues();
// Iterate over the fourth and fifth columns and set their values to
their absolute value.
let rowCount = range.getRowCount();
for (let i = 1; i < rowCount; i++) {
// The column at index 3 is column "4" in the worksheet.
if (rangeValues[i][3] != 0) {
let positiveValue = Math.abs(rangeValues[i][3] as number);
selectedSheet.getCell(i, 3).setValue(positiveValue);
}
Essa parte do script faz várias tarefas importantes. Primeiro, ela obtém os valores e
a contagem de linhas do intervalo usado. Isso permite que o script examine os
valores e saiba quando parar. Segundo, ela reitera através do intervalo usado,
verificando cada célula nas colunas Débito ou Crédito. Por fim, se o valor na célula
não for 0, ele será substituído pelo valor absoluto. O script ignora zeros, para que
você possa deixar as células em branco como estavam.
3. Execute o script.
Sua instrução bancária agora deve ter formatado corretamente números positivos.
Próximas etapas
Abra o Editor de Código e experimente alguns dos nossos Scripts de exemplo para
Scripts do Office no Excel. Você também pode visitar fundamentos para scripts do Office
no Excel para saber mais sobre como criar scripts do Office.
Este tutorial ensina como executar um Script do Office para Excel por meio do Power
Automate . Você fará um script que atualizará os valores de duas células com a hora
atual. Depois, você fará a conexão desse script a um fluxo do Power Automate acionado
manualmente, para que o script seja executado sempre que um botão no Power
Automate for selecionado. Depois de entender o padrão básico, você pode expandir o
fluxo para incluir outros aplicativos e automatizar ainda mais o seu fluxo de trabalho
diário.
Dica
Se você for novo em Scripts do Office, recomendamos começar com Tutorial: Criar
e formatar uma tabela do Excel. Os Scripts do Office usam TypeScript e este
tutorial se destina a pessoas com conhecimento de nível iniciante a intermediário
em JavaScript ou TypeScript. Se você é novo no JavaScript, recomendamos começar
com o tutorial da Mozilla sobre JavaScript .
Pré-requisitos
Você precisará de acesso aos Scripts do Office e ao Power Automate para este tutorial.
Examine o suporte da Plataforma se a guia Automatizar não aparecer. As perguntas
frequentes sobre a inscrição do Power Automate têm informações sobre como começar
com o Power Automate.
2. Substitua o script padrão pelo script abaixo. Esse script adiciona a data e hora
atuais às duas primeiras células da planilha TutorialWorksheet.
TypeScript
// Get the current date and time using the JavaScript Date object.
let date = new Date(Date.now());
3. Renomeie o script como Definir data e hora. Selecione o nome do script para
alterá-lo.
2. No menu exibido no lado esquerdo da tela, selecione Criar. Isso leva você a uma
lista de maneiras de criar novos fluxos de trabalho.
4. Na caixa de diálogo exibida, insira o nome para seu fluxo na caixa de textoNome
de Fluxo. Em Escolher como disparar o fluxo, selecione Disparar manualmente
um fluxo na lista de opções. Selecione Criar para concluir a configuração inicial.
8. Depois, você selecionará a pasta de trabalho e o script que será utilizado na etapa
do fluxo. Para o tutorial, você fará o uso da pasta de trabalho criada no seu
OneDrive, mas é possível usar qualquer pasta de trabalho em um site OneDrive ou
no Microsoft Office SharePoint Online. Especifique os seguintes parâmetros para a
ação Executar script :
Seu fluxo agora está pronto para ser executado por meio do Power Automate. Você
pode testá-lo usando o botão Testar no editor de fluxo ou seguir as etapas restantes do
tutorial para executar o fluxo a partir da sua coleção de fluxos.
2. Selecione Fluxo do meu tutorial na lista de fluxos exibida na guia Meus fluxos.
Isso irá lhe mostrar os detalhes do fluxo que criamos anteriormente.
3. Selecione Executar.
4. Um painel de tarefas irá aparecer para executar o fluxo. Se você for solicitado a
Entrar no Excel Online, entre selecionando Continuar.
5. Selecione Executar fluxo. Isso executará o fluxo, que, por sua vez, executará o
Script do Office relacionado.
6. Selecione Concluído. Você deve ver a atualização do histórico de execução de
acordo.
8. Abra a pasta de trabalho para ver as células atualizadas. Você deve ver a data atual
na célula A1 e a hora atual na célula B1. O Power Automate usa UTC (Tempo
Universal Coordenado), portanto, o tempo provavelmente será compensado do
fuso horário atual.
Próximas etapas
Tutorial completo: salve automaticamente o conteúdo de emails em uma pasta de
trabalho. O tutorial ensinará como transferir dados de um serviço de fluxo de trabalho
para o seu Script do Office e executar o fluxo do Power Automate quando certos
eventos ocorrerem.
Tutorial: salvar automaticamente o
conteúdo de emails em uma pasta de
trabalho
Artigo • 07/12/2023
Este tutorial ensina como usar um Script do Office para Excel com um fluxo de trabalho
automatizado do Power Automate . Seu script irá automaticamente ser executado
toda vez que você receber um email, gravando informações do email em uma pasta de
trabalho do Excel. Ser capaz de passar os dados de outros aplicativos para um Script do
Office oferece a você uma grande flexibilidade e liberdade nos seus processos
automatizados.
Dica
Se você for novo em Scripts do Office, recomendamos começar com Tutorial: Criar
e formatar uma tabela do Excel. Se você for novo no Power Automate,
recomendamos começar com o Tutorial: atualizar uma planilha de um fluxo do
Power Automate. Os Scripts do Office usam TypeScript e este tutorial se destina a
pessoas com conhecimento de nível iniciante a intermediário em JavaScript ou
TypeScript. Se você é novo no JavaScript, recomendamos começar com o tutorial
da Mozilla sobre JavaScript .
Pré-requisitos
Você precisará de acesso aos Scripts do Office e ao Power Automate para este tutorial.
Examine o suporte da Plataforma se a guia Automatizar não aparecer. As perguntas
frequentes sobre a inscrição do Power Automate têm informações sobre como começar
com o Power Automate.
TypeScript
newPivotTable.addDataHierarchy(newPivotTable.getHierarchy("Subject"));
}
TypeScript
function main(
workbook: ExcelScript.Workbook,
from: string,
dateReceived: string,
subject: string) {
TypeScript
TypeScript
// Parse the received date string to determine the day of the week.
let emailDate = new Date(dateReceived);
let dayName = emailDate.toLocaleDateString("en-US", { weekday: 'long'
});
5. A cadeia subject pode incluir a marca de resposta "RE:". Remova isso da cadeia de
caracteres para que os emails no mesmo thread tenham o mesmo assunto para a
tabela. Adicione o código a seguir ao final do script antes do fechamento } .
TypeScript
// Remove the reply tag from the email subject to group emails on the
same thread.
let subjectText = subject.replace("Re: ", "");
subjectText = subjectText.replace("RE: ", "");
6. Agora que os dados de email foram formatados, adicione uma linha à tabela de
email. Adicione o código a seguir ao final do script antes do fechamento } .
TypeScript
7. Por fim, verifique se a Tabela Dinâmica está atualizada. Adicione o seguinte código
no final do script (antes do encerramento } ):
TypeScript
O seu script já está pronto para um fluxo de trabalho automatizado. Ele deve se parecer
com o script a seguir.
TypeScript
function main(
workbook: ExcelScript.Workbook,
from: string,
dateReceived: string,
subject: string) {
// Get the email table.
let emailWorksheet = workbook.getWorksheet("Emails");
let table = emailWorksheet.getTable("EmailTable");
// Parse the received date string to determine the day of the week.
let emailDate = new Date(dateReceived);
let dayName = emailDate.toLocaleDateString("en-US", { weekday: 'long' });
// Remove the reply tag from the email subject to group emails on the same
thread.
let subjectText = subject.replace("Re: ", "");
subjectText = subjectText.replace("RE: ", "");
2. No menu exibido no lado esquerdo da tela, selecione Criar. Isso o conduzirá a uma
lista de maneiras de criar novos fluxos de trabalho.
4. Na caixa de diálogo exibida, insira o nome para seu fluxo na caixa de textoNome
de Fluxo. Em Escolher o gatilho do fluxo, selecione Quando um novo email
chegar na lista de opções. Talvez seja necessário procurar pela opção usando a
caixa de pesquisa. Por fim, selecione Criar.
7 Observação
Este tutorial usa o Outlook. Sinta-se à vontade para usar o seu serviço de
email preferido, embora algumas opções possam ser diferentes.
7. Você pode ser solicitado a entrar em sua conta do Microsoft 365. Faça isso para
continuar o tutorial.
8. Depois, você selecionará a pasta de trabalho e o script que será utilizado na etapa
do fluxo. Para o tutorial, você fará o uso da pasta de trabalho criada no seu
OneDrive, mas é possível usar qualquer pasta de trabalho em um site OneDrive ou
no Microsoft Office SharePoint Online. Especifique os seguintes parâmetros para a
ação Executar script :
9. Selecione Salvar.
Agora, o fluxo está habilitado. O seu script será automaticamente executado sempre
que você receber um email por meio do Outlook.
2. Selecione o seu fluxo. Aqui você pode ver o histórico de execução. Você pode
atualizar a página ou selecionar o botão atualizar Executar Todos para atualizar o
histórico. O fluxo será disparado logo após o recebimento de um email. Testar o
fluxo enviando a si mesmo um email.
Quando o fluxo é acionado e executa seu script com sucesso, você deverá ver as
atualizações da planilha na pasta de trabalho e da tabela dinâmica.
Solução de problemas
Receber vários emails ao mesmo tempo pode causar conflitos de mesclagem no Excel.
Esse risco é mitigado configurando o conector de email para atuar apenas em um email
por vez. Para fazer isso:
Este tutorial ensina como retornar informações de um Script do Office para Excel como
parte de um fluxo de trabalho automatizado do Power Automate . Você fará um script
que olha através de uma programação e trabalha com um fluxo para enviar emails de
lembrete. Esse fluxo será executado em uma programação regular, fornecendo esses
lembretes em seu nome.
Dica
Se você for novo em Scripts do Office, recomendamos começar com Tutorial: Criar
e formatar uma tabela do Excel.
Pré-requisitos
Você precisará de acesso aos Scripts do Office e ao Power Automate para este tutorial.
Examine o suporte da Plataforma se a guia Automatizar não aparecer. As perguntas
frequentes sobre a inscrição do Power Automate têm informações sobre como começar
com o Power Automate.
) Importante
TypeScript
4. Em seguida, você precisa obter todos os dados da tabela. Isso permite que o script
examine cada linha. Adicione o seguinte código dentro da função main .
TypeScript
TypeScript
6. Agora, você precisa descobrir qual pessoa está de plantão agora. A linha deles terá
uma data de início e de término em torno da data atual. O script pressupõe que
apenas uma pessoa esteja de plantão por vez. Os scripts podem retornar matrizes
para lidar com vários valores, mas você pode retornar o primeiro endereço de
email correspondente para este tutorial. Adicione o seguinte código ao final da
função main .
TypeScript
// Look for the first row where today's date is between the row's start
and end dates.
let currentDate = new Date();
for (let row = 0; row < tableValues.length; row++) {
let startDate = convertDate(tableValues[row][2] as number);
let endDate = convertDate(tableValues[row][3] as number);
if (startDate <= currentDate && endDate >= currentDate) {
// Return the first matching email address.
return tableValues[row][1].toString();
}
}
TypeScript
// Look for the first row where today's date is between the row's
start and end dates.
let currentDate = new Date();
for (let row = 0; row < tableValues.length; row++) {
let startDate = convertDate(tableValues[row][2] as number);
let endDate = convertDate(tableValues[row][3] as number);
if (startDate <= currentDate && endDate >= currentDate) {
// Return the first matching email address.
return tableValues[row][1].toString();
}
}
}
2. No menu exibido no lado esquerdo da tela, selecione Criar. Isso o conduzirá a uma
lista de maneiras de criar novos fluxos de trabalho.
4. Em seguida, defina a agenda para esse fluxo. Sua planilha tem uma nova atribuição
de chamada a partir de segunda-feira no primeiro semestre de 2024. Defina o
fluxo para ser executado na segunda de manhã. Use as seguintes opções para
configurar o fluxo a ser executado na segunda-feira de cada semana.
8. Você pode ser solicitado a entrar em sua conta do Microsoft 365. Faça isso para
continuar o tutorial.
9. Depois, você selecionará a pasta de trabalho e o script que será utilizado na etapa
do fluxo. Para o tutorial, você fará o uso da pasta de trabalho criada no seu
OneDrive, mas é possível usar qualquer pasta de trabalho em um site OneDrive ou
no Microsoft Office SharePoint Online. Especifique os seguintes parâmetros para a
ação Executar script :
11. Termine o fluxo enviando o email de lembrete. No painel Adicionar uma tarefa de
ação , procure por "enviar um email". Escolha a ação Enviar um email (V2) do
conector do Office 365 Outlook.
7 Observação
Este tutorial usa o Outlook. Sinta-se à vontade para usar o seu serviço de
email preferido, embora algumas opções possam ser diferentes.
Dica
Se o seu fluxo não enviar um email, verifique na planilha se um email válido está
listado para o intervalo de datas atual na parte superior da tabela.
Próximas etapas
Visite executar os Scripts do Office com o Power Automate para saber mais sobre como
conectar Scripts do Office com o Power Automate.
Este artigo apresentará os aspectos técnicos dos scripts do Office. Você aprenderá as
partes críticas do código de script baseado em TypeScript e como os objetos Excel e as
APIs funcionam juntos.
TypeScript
O código dentro da função main é executado quando o script é executado. main pode
chamar outras funções em seu script, mas o código que não estiver contido em uma
função não será executado. Os scripts não podem invocar ou chamar outros Scripts do
Office.
O Power Automate permite que você conecte scripts em fluxos. Os dados são
passados entre os scripts e o fluxo por meio dos parâmetros e retornos da função main .
Como integrar os Scripts do Office com o Power Automate é abordado em detalhes em
Executar Scripts do Office com o Power Automate .
Pasta de Trabalho
Todo script é fornecido com um workbook objeto do tipo Workbook pela função main .
Isso representa o objeto de nível superior por meio do qual seu script interage com a
pasta de trabalho do Excel.
O script a seguir obtém a planilha ativa da pasta de trabalho e registra seu nome.
TypeScript
function main(workbook: ExcelScript.Workbook) {
// Get the active worksheet.
let sheet = workbook.getActiveWorksheet();
Intervalos
Um intervalo é um grupo de células contíguas na pasta de trabalho. Os scripts
costumam usar uma notação estilo A1 (por ex.: B3 para a única célula na coluna B e
linha 3 ou C2:F4 para as células das colunas C a F e linhas 2 a 4) para definir intervalos.
Os intervalo usam matrizes bidimensionais para gerenciar informações. Para obter mais
informações sobre como lidar com matrizes na estrutura de Scripts do Office, consulte
Trabalhar com intervalos.
Exemplo de intervalo
O exemplo a seguir mostra como criar registros de vendas. Este script usa Range objetos
para definir os valores, fórmulas e partes do formato.
TypeScript
Quando você estiver usando o valor da célula, é importante informar ao TypeScript qual
valor você espera obter de uma célula ou intervalo. Uma célula contém um dos
seguintes tipos: string , number , ou boolean . Para que seu script trate os valores
retornados como um desses tipos, você deve declarar o tipo.
O script a seguir obtém o preço médio da tabela do exemplo anterior. Observe o código
priceRange.getValues() as number[][] . Isso declara o tipo dos valores do intervalo
como um number[][] . Todos os valores nessa matriz podem então ser tratados como
números no script.
TypeScript
TypeScript
// Add a table that has headers using the data from B2:E5.
sheet.addTable("B2:E5", true);
}
Executar esse script na planilha com os dados anteriores cria a tabela a seguir:
Criar um gráfico
Crie gráficos para visualizar os dados em um intervalo. Os scripts permitem inúmeras
variedades de gráficos que podem ser personalizadas de acordo com suas necessidades.
O script a seguir cria um gráfico de colunas simples para três itens e o coloca 100 pixels
abaixo da parte superior da planilha.
TypeScript
// Set the margin of the chart to be 100 pixels from the top of the
screen.
chart.setTop(100);
}
Executar este script na planilha com a tabela anterior cria o seguinte gráfico:
Coleções
Quando um objeto do Excel tem uma coleção de um ou mais objetos do mesmo tipo,
ele os armazena em uma matriz. Por exemplo, um objeto Workbook contém um
Worksheet[] . Esta matriz é acessada pelo método Workbook.getWorksheets() . Os
métodos get que são plurais, como Worksheet.getCharts() , retornam toda a coleção de
objetos como uma matriz. Você verá este padrão em todas as APIs de Scripts do Office:
o objeto Worksheet tem um método getTables() que retorna um Table[] , o objeto
Table tem um método getColumns() que retorna um TableColumn[] , como assim em
diante.
Objetos individuais também são acessados a partir da coleção por meio de um método
get . Os métodos get que são singulares, como Worksheet.getTable(name) , retornam
O script a seguir obtém todas as tabelas na pasta de trabalho. Em seguida, garante que
os cabeçalhos sejam exibidos, os botões de filtro estejam visíveis e o estilo da tabela
seja definido como "TableStyleLight1".
TypeScript
function main(workbook: ExcelScript.Workbook) {
// Get the table collection.
let tables = workbook.getTables();
) Importante
O script a seguir cria, no Excel, uma tabela na primeira planilha da pasta de trabalho.
Observe que a tabela criada é enviada de volta pelo método addTable .
TypeScript
Dica
A maioria dos objetos do Excel possui um método setName . Isso fornece uma
maneira fácil de acessar objetos do Excel posteriormente no script ou em outros
scripts para a mesma pasta de trabalho.
O script a seguir solicita uma tabela chamada "MinhaTabela" e utiliza uma instrução
if...else para verificar se a tabela foi encontrada.
TypeScript
Um padrão comum em Scripts do Office é recriar uma tabela, gráfico ou outro objeto
sempre que o script for executado. Se você não precisa de dados antigos, é melhor
excluir o objeto antigo antes de criar o novo. Isso evita conflitos de nome ou outras
diferenças que possam ter sido introduzidas por outros usuários.
TypeScript
7 Observação
TypeScript
Gráfico
Comentário
PivotTable
Range
RangeFormat
Formato
Table
Pasta de trabalho
Planilha
Confira também
Gravar, editar e criar scripts do Office no Excel
Ler dados de pasta de trabalho com scripts do Office no Excel
Referência da API de scripts do Office
Trabalhar com Tabelas Dinâmicas no Office Scripts
Usar objetos internos do JavaScript nos scripts do Office
Práticas recomendadas nos Scripts do Office
Centro de Desenvolvimento de Scripts do Office
Executar scripts do Office com o Power
Automate
Artigo • 19/01/2024
) Importante
Para usar scripts do Office no Power Automate , você deve ter uma licença
comercial do Microsoft 365.
Dica
Introdução
Se você for novo no Power Automate, recomendamos visitar Introdução ao Power
Automate. Lá, você pode saber mais sobre todas as possibilidades de automação
disponíveis para você. Os documentos aqui se concentram em como os Scripts do
Office funcionam com o Power Automate e como isso pode ajudar a melhorar sua
experiência no Excel.
Isso abre um painel de tarefas com várias opções para começar a conectar seus Scripts
do Office a soluções automatizadas maiores. Selecione qualquer opção para começar.
Seu fluxo é fornecido com a pasta de trabalho atual.
Dica
Você também pode começar a fazer um fluxo no menu Mais opções (...) em um
script individual.
Conector do Excel
O conector do Excel Online (Business) fornece aos fluxos acesso às pastas de trabalho
do Excel. Há duas ações que chamam Scripts do Office.
Executar script. Essa é a ação a ser usada com scripts armazenados no local
padrão do Seu OneDrive.
Execute o script da biblioteca do SharePoint. Essa é a ação a ser usada quando os
scripts são armazenados no site do SharePoint da sua equipe.
Executar script
Para a ação Executar script , o local do script está sempre em seu OneDrive.
Saiba os detalhes de como passar dados de e para seus scripts com a documentação a
seguir.
Exemplo
A captura de tela a seguir mostra um fluxo do Power Automate que é disparado sempre
que uma nova resposta a um Formulário é enviada. O fluxo executa um script que
adiciona o valor de satisfação do Formulário a uma tabela. A satisfação média atual é
retornada e enviada como um email.
A main função do script especifica o novo valor de satisfação como um parâmetro de
entrada ( newData ). O script retorna o valor médio de satisfação da tabela.
TypeScript
7 Observação
O parâmetro de script é do tipo string porque esse é o tipo que a ação Forms
retorna para todos os valores.
Confira também
Tutorial: atualizar uma planilha de um fluxo do Power Automate
Passar dados de e para scripts no Power Automate
Solução de problemas de informações para o Power Automate com scripts do
Office
Começar a usar o Power Automate
Documentação de referência do conector do Excel Online (Business)
6 Colaborar conosco no
GitHub Comentários do Office Scripts
O Office Scripts é um projeto código aberto.
A fonte deste conteúdo pode
Selecione um link para fornecer
ser encontrada no GitHub, onde
comentários:
você também pode criar e
revisar problemas e solicitações
Abrir um problema de documentação
de pull. Para obter mais
informações, confira o nosso
Fornecer comentários sobre o produto
guia para colaboradores.
Práticas recomendadas no Scripts do
Office
Artigo • 31/03/2023
Esses padrões e práticas são projetados para ajudar seus scripts a serem executados
com êxito todas as vezes. Use-as para evitar armadilhas comuns à medida que você
começa a automatizar seu fluxo de trabalho do Excel.
) Importante
Ocasionalmente, o Gravador de Ações pode usar uma API que não tem suporte
fora de Excel na Web. Os usuários desse script em outras plataformas recebem um
aviso ao exibir esse script.
TypeScript
TypeScript
// The ? ensures that the delete() API is only called if the object exists.
workbook.getWorksheet('Index')?.delete();
O script a seguir requer que duas tabelas chamadas "Table1" e "Table2" estejam
presentes. O script primeiro verifica se as tabelas estão presentes e, em seguida, termina
com a return instrução e uma mensagem apropriada se não estiverem.
TypeScript
function main(workbook: ExcelScript.Workbook) {
// These tables must be in the workbook for the script.
const TargetTableName = 'Table1';
const SourceTableName = 'Table2';
// Continue...
}
TypeScript
// Continue...
}
return true;
}
O script a seguir mostra como usar a throw instrução em nosso exemplo de verificação
de tabela.
TypeScript
TypeScript
range.setValues(someLargeValues);
Se someLargeValues for maior que Excel na Web puder lidar, a setValues() chamada
falhará. O script também falha com um erro de runtime. A try...catch instrução
permite que seu script reconheça essa condição, sem encerrar imediatamente o script e
mostrar o erro padrão.
Uma abordagem para dar ao usuário de script uma experiência melhor é apresentar
uma mensagem de erro personalizada. O snippet a seguir mostra uma try...catch
instrução registrando mais informações de erro para ajudar melhor o leitor.
TypeScript
try {
range.setValues(someLargeValues);
} catch (error) {
console.log(`The script failed to update the values at location
${range.getAddress()}. Please inspect and run again.`);
console.log(error);
return; // End the script (assuming this is in the main function).
}
Outra abordagem para lidar com erros é ter um comportamento de fallback que
manipula o caso de erro. O snippet a seguir usa o catch bloco para tentar um método
alternativo dividir a atualização em partes menores e evitar o erro.
Dica
TypeScript
try {
range.setValues(someLargeValues);
} catch (error) {
console.log(`The script failed to update the values at location
${range.getAddress()}. Trying a different approach.`);
handleUpdatesInSmallerBatches(someLargeValues);
}
// Continue...
}
7 Observação
Confira também
Solução de problemas dos scripts do Office
Solução de problemas de informações para o Power Automate com scripts do
Office
Limites de plataforma com scripts do Office
Melhorar o desempenho dos scripts do Office
Usar objetos JavaScript internos em
Scripts do Office
Artigo • 07/04/2023
O JavaScript fornece vários objetos internos que você pode usar em seus Scripts do
Office, independentemente de você estar fazendo scripts em JavaScript ou TypeScript
(um superconjunto de JavaScript). Este artigo descreve como usar alguns dos objetos
JavaScript internos em Scripts do Office para Excel.
7 Observação
Para obter uma lista completa de todos os objetos JavaScript internos, consulte o
artigo Objetos internos Standard da Mozilla.
Matriz
O objeto Array fornece uma maneira padronizada de trabalhar com matrizes em seu
script. Embora as matrizes sejam construções JavaScript padrão, elas se relacionam com
scripts do Office de duas maneiras principais: intervalos e coleções.
O script a seguir pesquisa o intervalo A1:D4 para qualquer formato de número que
contenha um "$". O script define a cor de preenchimento nessas células como
"amarela".
TypeScript
7 Observação
TypeScript
Typescript
Data
O objeto Date fornece uma maneira padronizada de trabalhar com datas em seu
script. Date.now() gera um objeto com a data e hora atuais, o que é útil ao adicionar
carimbos de data/hora à entrada de dados do script.
O script a seguir adiciona a data atual à planilha. Observe que, usando o método, o
toLocaleDateString Excel reconhece o valor como uma data e altera o formato de
TypeScript
A seção Trabalhar com datas dos exemplos tem mais scripts relacionados à data.
Matemática
O objeto Math fornece métodos e constantes para operações matemáticas comuns.
Elas fornecem várias funções também disponíveis no Excel, sem a necessidade de usar o
mecanismo de cálculo da pasta de trabalho. Isso salva o script de ter que consultar a
pasta de trabalho, o que melhora o desempenho.
O script a seguir usa Math.min para localizar e registrar o menor número no intervalo
A1:D4 . Observe que esse exemplo pressupõe que todo o intervalo contém apenas
números, não cadeias de caracteres.
TypeScript
console.log(minimum);
}
Confira também
Objetos internos padrão
Ambiente do Editor de Código de Scripts do Office
Ambiente do Editor de Código de
Scripts do Office
Artigo • 21/12/2023
Os Scripts do Office são em grande parte peças de código independentes. Apenas uma
pequena parte da funcionalidade do TypeScript é usada. Portanto, você pode editar
scripts sem precisar aprender os meandros do TypeScript. O Editor de Código também
manipula a instalação, a compilação e a execução do código, portanto, você não precisa
se preocupar com nada além do script em si. É possível aprender o idioma e criar scripts
sem conhecimento de programação anterior. No entanto, se você for novo na
programação, recomendamos aprender alguns fundamentos antes de prosseguir com
scripts do Office.
Intellisense
O IntelliSense é um conjunto de recursos do Editor de Código que ajudam você a
escrever código. Ele fornece realce de erro de sintaxe e preenchimento automático e
documentação de API embutida.
Passe o cursor sobre um método, classe ou outro objeto de código para ver mais
informações. Passe o mouse sobre um erro de sintaxe ou uma sugestão de código,
representada por uma linha vermelha ou amarela, para ver sugestões sobre como
corrigir o problema. Muitas vezes, o IntelliSense fornece uma opção "Correção Rápida"
para alterar automaticamente o código.
O Editor de Código de Scripts do Office usa o mesmo mecanismo IntelliSense que Visual
Studio Code. Para saber mais sobre o recurso, visite os recursos do IntelliSense do Visual
Studio Code .
Atalhos de teclado
A maioria dos atalhos de teclado para Visual Studio Code também funcionam no Editor
de Código de Scripts do Office. Use os seguintes PDFs para saber mais sobre as opções
disponíveis e aproveitar ao máximo o Editor de Código:
Confira também
Referência da API de scripts do Office
Solução de problemas dos scripts do Office
Usar objetos internos do JavaScript nos scripts do Office
Chamada de API externa nos scripts do
Office
Artigo • 05/05/2023
Scripts dão suporte a chamadas para serviços externos. Use esses serviços para fornecer
dados e outras informações para sua pasta de trabalho.
U Cuidado
) Importante
Chamadas para APIs externas só podem ser feitas por meio do aplicativo Excel, não
por meio do Power Automate em circunstâncias normais. Também não há suporte
para chamadas externas para scripts armazenados em um site do SharePoint.
TypeScript
7 Observação
Scripts que retornam outras informações podem retornar um Promise desse tipo.
Por exemplo, se o script precisar retornar um Employee objeto, a assinatura de
retorno será : Promise <Employee>
Você precisará aprender as interfaces do serviço externo para fazer chamadas para esse
serviço. Se você estiver usando fetch ou APIs REST , precisará determinar a estrutura
JSON dos dados retornados. Para entrada e saída do script, considere fazer um
interface para corresponder às estruturas JSON necessárias. Isso dá ao script mais
segurança de tipo. Você pode ver um exemplo disso em Usar buscar de Scripts do
Office.
Todos os dados JSON recuperados por fetch devem corresponder a uma interface
definida no script. O valor retornado deve ser atribuído a um tipo específico porque os
Scripts do Office não dão suporte ao any tipo. Você deve consultar a documentação do
serviço para ver quais são os nomes e tipos das propriedades retornadas. Em seguida,
adicione a interface ou interfaces correspondentes ao script.
O script a seguir usa fetch para recuperar dados JSON do servidor de teste na URL
fornecida. Observe a JSONData interface para armazenar os dados como um tipo
correspondente.
TypeScript
/**
* An interface that matches the returned JSON structure.
* The property names match exactly.
*/
interface JSONData {
userId: number;
id: number;
title: string;
completed: boolean;
}
Você terá que usar HTTP com Azure AD ou outras ações equivalentes para extrair dados
ou empurrá-los para um serviço externo.
2 Aviso
Confira também
Usar json para passar dados de e para scripts do Office
Usar objetos internos do JavaScript nos scripts do Office
Usar chamadas de busca externa em Scripts do Office
Cenário de exemplo de Scripts do Office: dados de nível de água do graph da
NOAA
Armazenamento e propriedade de
arquivos do Office Scripts
Artigo • 12/01/2024
) Importante
Armazenamento de arquivos
Para empresas e educação
OneDrive
Os scripts compartilhados com uma de suas pastas de trabalho permanecem no
OneDrive do criador do script. Elas não são copiadas para nenhuma das pastas
locais ou do OneDrive quando você executa o script compartilhado no Excel. O
botão Mover mostrado ao renomear um script move o script para um novo local. O
botão Fazer uma Cópia do Editor de Código salva uma cópia separada do script em
seu OneDrive. As alterações na cópia não afetam o script original.
A menos que você compartilhe seus scripts pessoais, ninguém mais pode acessá-
los. As configurações do OneDrive controlam o acesso compartilhado e as
permissões para todos os arquivos .osts de script, independentemente de qualquer
configuração do Excel. Scripts não podem ser vinculados de um disco local ou
locais de nuvem personalizados.
SharePoint
Os Scripts do Office salvos em um site do SharePoint pertencem à sua equipe. Você
e os membros da sua organização com o acesso apropriado podem executar e
editar scripts do SharePoint. Você também verá esses scripts aparecerem na Galeria
de Scripts da guia Automatizar .
Para salvar uma cópia de um script no SharePoint, acesse o menu Mais opções (...)
e selecione Salvar como. Isso abre um seletor de arquivos em que você pode
selecionar pastas em seu site do SharePoint. Salvar em um novo local cria uma
cópia do script nesse local. A versão original ainda está em seu OneDrive ou em
outro local do SharePoint.
) Importante
7 Observação
Compartilhar scripts
Para empresas e educação
Para dar aos usuários que estão fora do site do SharePoint acesso ao script,
compartilhe o script com uma pasta de trabalho do Excel. Isso significa que você
está vinculando o script ao arquivo, não anexando-o. Quem tiver acesso ao arquivo
do Excel também poderá exibir, executar ou fazer uma cópia do script.
7 Observação
Quando você exclui um script no Excel, ele vai para a lixeira do OneDrive ou do
SharePoint. Para restaurar um script excluído, siga as etapas listadas em Como
recuperar itens ausentes, excluídos ou corrompidos no SharePoint e no OneDrive
para trabalho ou escola . Restaurar um arquivo .osts retorna-o à lista Todos os
scripts .
) Importante
Pode levar uma ou duas horas depois de ativar a gravação antes que todas as
atividades em todo o locatário sejam gravadas.
4. Defina as opções de pesquisa desejadas e selecione Pesquisar. Filtre o campo
Arquivo, pasta ou site para .osts . Isso revela quem na sua organização está
criando ou modificando scripts.
Confira também
Compartilhamento de Scripts do Office no Excel
Solução de problemas dos scripts do Office
Configurações dos scripts do Office no M365
Desfazer os efeitos do Scripts do Office
Obter entrada do usuário para scripts
Artigo • 18/09/2023
Adicionar parâmetros ao script permite que outros usuários forneçam dados para o
script, sem a necessidade de editar código. Quando o script é executado por meio da
faixa de opções ou de um botão, aparece um prompt que pede entrada.
) Importante
Atualmente, somente Excel na Web usuários serão solicitados a inserir dados para
scripts parametrizados. Os fluxos do Power Automate também dão suporte à
distribuição de dados para scripts por meio de parâmetros.
/**
* This script applies a background color to cells over a certain value.
* @param highlightThreshold The value used for comparisons.
* @param color A string representing the color to make the high value
cells.
* This must be a color code representing the color of the background,
* in the form #RRGGBB (e.g., "FFA500") or a named HTML color (e.g.,
"orange").
*/
function main(
workbook: ExcelScript.Workbook,
highlightThreshold: number,
color: string) {
// Get the used cells in the current worksheet.
const currentSheet = workbook.getActiveWorksheet();
const usedRange = currentSheet.getUsedRange();
string que representasse um nome como entrada, alteraria a main assinatura para
function main(workbook: ExcelScript.Workbook, name: string) .
Parâmetros opcionais
Parâmetros opcionais não precisam que o usuário forneça um valor. Isso implica que
seu script tem comportamento padrão ou esse parâmetro só é necessário em um caso
de canto. Eles são denotados em seu script com o modificador ? opcional. Por
Documentar o script
Comentários de código que seguem os padrões JSDoc serão mostrados às pessoas
quando executarem seu script. Quanto mais detalhes você colocar nas descrições, mais
fácil será para outras pessoas para os scripts. Descreva a finalidade de cada parâmetro
de entrada e quaisquer restrições ou limites. O exemplo a seguir JSDoc mostra como
documentar um script com um number parâmetro chamado taxRate .
TypeScript
/**
* A script to apply the current tax rate to sales figures.
* @param taxRate The current sales tax rate in the region as a decimal
number (enter 12% as .12).
*/
function main(workbook: ExcelScript.Workbook, taxRate: number)
7 Observação
Restrições de tipo
Ao adicionar parâmetros de entrada e valores retornados, considere os seguintes
subsídios e restrições.
TypeScript
interface Position {
id: number;
title: string;
}
TypeScript
Confira também
Passar dados de e para scripts no Power Automate
Executar scripts do Office no Excel com botões
Definir formatação condicional para comparações entre colunas
Passar dados de e para scripts no Power
Automate
Artigo • 29/11/2023
7 Observação
Quando você cria um bloco "Executar script" em seu fluxo, os parâmetros aceitos e
os tipos retornados são preenchidos. Se você alterar os parâmetros ou retornar
tipos do script, precisará refazer o bloco "Executar script" do fluxo. Isso garante que
os dados estão sendo analisados corretamente.
A captura de tela a seguir mostra qual script com a assinatura function main(workbook:
ExcelScript.Workbook, location: string = "Seattle") seria exibido.
Os menus suspensos criados por uniões de tipo também funcionam da mesma forma
no Power Automate.
Retornar dados de um script
Os scripts podem retornar dados da pasta de trabalho para serem usados como
conteúdo dinâmico em um fluxo do Power Automate. Para retornar um objeto, adicione
a sintaxe de tipo de retorno à main função. Por exemplo, se você quisesse retornar um
string valor do script, sua main assinatura seria function main(workbook:
ExcelScript.Workbook): string .
Os valores retornados são mostrados como conteúdo dinâmico da ação Executar script
no fluxo. O conteúdo dinâmico é chamado de "resultado".
Tipos aceitáveis para retornar dados são os mesmos que para parâmetros. Detalhes
sobre restrições de tipo são encontrados no artigo Obter entrada do usuário para
scripts.
Confira também
Tutorial: atualizar uma planilha de um fluxo do Power Automate
Obter entrada do usuário para scripts
Executar scripts do Office com o Power Automate
Solução de problemas de informações para o Power Automate com scripts do
Office
Executar scripts do Office no Excel a
partir de botões
Artigo • 21/12/2023
Ajude seus colegas a encontrar e executar seus scripts adicionando botões de script a
uma pasta de trabalho.
Confira também
Limites e requisitos da plataforma com scripts do Office
Usar json para passar dados de e para
scripts do Office
Artigo • 29/11/2023
Este artigo se concentra no uso do JSON com scripts do Office. Recomendamos que
você primeiro saiba mais sobre o formato de artigos como Introdução JSON das
Escolas W3.
O script a seguir mostra dados JSON sendo convertidos em uma tabela. Observe que os
dados não são retirados de uma fonte externa. Isso é abordado posteriormente neste
artigo.
TypeScript
/**
* Sample JSON data. This would be replaced by external calls or
* parameters getting data from Power Automate in a production script.
*/
const jsonData = [
{ "Action": "Edit", /* Action property with value of "Edit". */
"N": 3370, /* N property with value of 3370. */
"Percent": 17.85 /* Percent property with value of 17.85. */
},
// The rest of the object entries follow the same pattern.
{ "Action": "Paste", "N": 1171, "Percent": 6.2 },
{ "Action": "Clear", "N": 599, "Percent": 3.17 },
{ "Action": "Insert", "N": 352, "Percent": 1.86 },
{ "Action": "Delete", "N": 350, "Percent": 1.85 },
{ "Action": "Refresh", "N": 314, "Percent": 1.66 },
{ "Action": "Fill", "N": 286, "Percent": 1.51 },
];
/**
* This script converts JSON data to an Excel table.
*/
function main(workbook: ExcelScript.Workbook) {
// Create a new worksheet to store the imported data.
const newSheet = workbook.addWorksheet();
newSheet.activate();
/**
* This function turns a JSON object into an array to be used as a table
row.
*/
function convertJsonToRow(obj: object) {
const array: (string | number)[] = [];
// Loop over each property and get the value. Their order will be the same
as the column headers.
for (let value in obj) {
array.push(obj[value]);
}
return array;
}
/**
* This function gets the property names from a single JSON object.
*/
function getPropertiesFromJson(obj: object) {
const propertyArray: string[] = [];
// Loop over each property in the object and store the property name in an
array.
for (let property in obj) {
propertyArray.push(property);
}
return propertyArray;
}
Dica
Se você conhece a estrutura do JSON, pode criar sua própria interface para facilitar
a obtenção de propriedades específicas. Você pode substituir as etapas de
conversão JSON para matriz por referências de segurança de tipo. O snippet de
código a seguir mostra essas etapas (agora comentadas) substituídas por
chamadas que usam uma nova ActionRow interface. Observe que isso faz com que
a convertJsonToRow função não seja mais necessária.
TypeScript
interface ActionRow {
Action: string;
N: number;
Percent: number;
}
TypeScript
// For Power Automate, replace the main signature in the previous sample
with this one
// and remove the sample data.
function main(workbook: ExcelScript.Workbook, jsonData: object[]) {
Em seguida, você verá uma opção no conector do Power Automate para adicionar
jsonData à ação Executar script .
TypeScript
// For external services, replace the main signature in the previous sample
with this one,
// add the fetch call, and remove the sample data.
async function main(workbook: ExcelScript.Workbook) {
// Replace WEB_SERVICE_URL with the URL of whatever service you need to
call.
const response = await fetch('WEB_SERVICE_URL');
const jsonData: object[] = await response.json();
ノ Expand table
Cada transação (cada linha) tem um conjunto de propriedades associadas a ela: "ID",
"Date", "Amount" e "Vendor". Isso pode ser modelado em um Script do Office como um
objeto.
TypeScript
TypeScript
TypeScript
TypeScript
// For each row, create a JSON object and assign each property to it based
on the table headers.
for (let i = 0; i < dataValues.length; i++) {
// Create a blank generic JSON object.
let jsonObject: { [key: string]: string } = {};
for (let j = 0; j < dataValues[i].length; j++) {
jsonObject[tableHeaders[j]] = dataValues[i][j] as string;
}
jsonArray.push(jsonObject);
}
Confira também
Chamada de API externa nos scripts do Office
Exemplo: usar chamadas de busca externas em Scripts do Office
Executar scripts do Office com o Power Automate
Como usar arquivos habilitados para
macro em fluxos do Power Automate
Artigo • 25/10/2023
) Importante
As macros contidas nos arquivos .xlsm não podem ser executadas por meio do
Power Automate. Somente scripts do Office estão habilitados lá.
A ação Executar script permite selecionar arquivos .xlsm. Outras ações do conector
exigem que você use a ID do arquivo. Obtenha essa ID com a ação Obter metadados de
arquivo dos conectores do OneDrive for Business ou do SharePoint . Use o
conteúdo dinâmico de ID retornado da ação Obter metadados de arquivo como o
argumento "Arquivo" para ações do conector do Excel.
2 Aviso
Confira também
Referência do conector do Excel Online (Business)
Executar scripts do Office com o Power Automate
Trabalhar com Tabelas Dinâmicas no
Office Scripts
Artigo • 25/10/2023
7 Observação
Para entender melhor o contexto dos termos usados pelas APIs, leia primeiro a
documentação da Tabela Dinâmica do Excel. Comece com Criar uma Tabela
Dinâmica para analisar dados de planilha .
Modelo de objetos
A Tabela Dinâmica é o objeto central para Tabelas Dinâmicas na API de Scripts do Office.
O objeto Workbook tem uma coleção de todas as Tabelas Dinâmicas. Cada Planilha
também contém uma coleção de Tabela Dinâmica que é local para essa planilha.
Uma Tabela Dinâmica contém PivotHierarchies. Uma hierarquia pode ser
considerada como uma coluna em uma tabela.
PivotHierarchies podem ser adicionados como linhas ou colunas
(RowColumnPivotHierarchy), dados (DataPivotHierarchy) ou filtros
(FilterPivotHierarchy).
Cada PivotHierarchy contém exatamente um PivotField. Estruturas de tabela
dinâmica fora do Excel podem conter vários campos por hierarquia, portanto, esse
design existe para dar suporte a opções futuras. Para Scripts do Office, campos e
hierarquias mapeiam para as mesmas informações.
Um PivotFieldcontém vários PivotItems. Cada PivotItem é um valor exclusivo no
campo. Pense em cada item como um valor na coluna de tabela. Os itens também
poderão ser valores agregados, como somas, se o campo estiver sendo usado para
dados.
O PivotLayout define como os PivotFields e PivotItems são exibidos .
PivotFilters filtram dados da Tabela Dinâmica usando critérios diferentes.
Para examinar como essas relações funcionam na prática, comece baixando a pasta de
trabalho de exemplo. Esses dados descrevem as vendas de frutas de várias fazendas. É a
base para todos os exemplos neste artigo. Execute os scripts de exemplo ao longo do
artigo para criar e explorar tabelas dinâmicas.
O snippet de código a seguir cria uma Tabela Dinâmica com base em um intervalo de
dados. A Tabela Dinâmica não tem hierarquias, portanto, os dados ainda não estão
agrupados de forma alguma.
TypeScript
Hierarquias e campos
As tabelas dinâmicas são organizadas por meio de hierarquias. Essas hierarquias são
usadas para pivotar dados quando adicionadas como um tipo específico de hierarquia.
Há quatro tipos de hierarquias.
Uma Tabela Dinâmica pode ter tantos ou poucos de seus campos atribuídos a essas
hierarquias específicas. Uma Tabela Dinâmica precisa de pelo menos uma hierarquia de
dados para mostrar dados numéricos resumidos e pelo menos uma linha ou coluna para
pivotar esse resumo. O snippet de código a seguir adiciona duas hierarquias de linha e
duas hierarquias de dados.
TypeScript
farmPivot.addRowHierarchy(farmPivot.getHierarchy("Farm"));
farmPivot.addRowHierarchy(farmPivot.getHierarchy("Type"));
farmPivot.addDataHierarchy(farmPivot.getHierarchy("Crates Sold at Farm"));
farmPivot.addDataHierarchy(farmPivot.getHierarchy("Crates Sold
Wholesale"));
Intervalos de layout
Cada parte da Tabela Dinâmica é mapeada para um intervalo. Isso permite que seu
script obtenha dados da Tabela Dinâmica para uso posterior no script ou para ser
retornado em um fluxo do Power Automate. Esses intervalos são acessados por meio do
objeto PivotLayout adquirido de PivotTable.getLayout() . O diagrama a seguir mostra
os intervalos retornados pelos métodos em PivotLayout .
Saída total da Tabela Dinâmica
O local da linha total é baseado no layout. Use PivotLayout.getBodyAndTotalRange e
obtenha a última linha da coluna para usar os dados da Tabela Dinâmica em seu script.
TypeScript
function main(workbook: ExcelScript.Workbook) {
// Get the first PivotTable in the workbook.
const pivotTable = workbook.getPivotTables()[0];
// Get the range with the "grand totals" for the PivotTable columns.
const grandTotalRange = pivotDataRange.getLastRow();
Filtros e segmentações
Há três maneiras de filtrar uma Tabela Dinâmica.
FilterPivotHierarchies
PivotFilters
Slicers
FilterPivotHierarchies
FilterPivotHierarchies adicione uma hierarquia adicional para filtrar cada linha de
dados. Qualquer linha com um item filtrado é excluída da Tabela Dinâmica e seus
resumos. Como esses filtros são baseados em itens, eles funcionam apenas em valores
discretos. Se "Classificação" for uma hierarquia de filtro em nosso exemplo, os usuários
poderão selecionar os valores de "Orgânico" e "Convencional" para o filtro. Da mesma
forma, se "Crates Sold Wholesale" for selecionado, as opções de filtro serão os números
individuais, como 120 e 150, em vez de intervalos numéricos.
que nada é filtrado até que o usuário interaja manualmente com o controle de filtro ou
um PivotManualFilter seja definido no campo que pertence ao FilterPivotHierarchy .
farmPivot.addFilterHierarchy(farmPivot.getHierarchy("Classification"));
PivotFilters
O PivotFilters objeto é uma coleção de filtros aplicados a um único campo. Como
cada hierarquia tem exatamente um campo, você deve sempre usar o primeiro campo
em PivotHierarchy.getFields() ao aplicar filtros. Há quatro tipos de filtro.
O snippet de código a seguir adiciona dois filtros. O primeiro é um filtro manual que
seleciona itens em uma hierarquia de filtro "Classificação" existente. O segundo filtro
remove todas as fazendas que têm menos de 300 "Crates Sold Wholesale". Observe que
isso filtra a "Soma" dessas fazendas, não as linhas individuais dos dados originais.
TypeScript
const classificationField =
farmPivot.getFilterHierarchy("Classification").getFields()[0];
classificationField.applyFilter({
manualFilter: {
selectedItems: ["Organic"] /* The included items. */
}
});
Segmentações de dados
Os segmentadores filtram dados em uma Tabela Dinâmica (ou tabela padrão). Eles
são objetos moveveis na planilha que permitem seleções de filtragem rápida. Uma
segmentação opera de forma semelhante ao filtro manual e PivotFilterHierarchy . Os
itens do PivotField são alternados para incluí-los ou excluí-los da Tabela Dinâmica.
O snippet de código a seguir adiciona uma segmentação para o campo "Tipo". Ele
define os itens selecionados como "Lemon" e "Lime", em seguida, move a segmentação
de 400 pixels para a esquerda.
TypeScript
Confira também
Fundamentos para scripts do Office no Excel
Referência da API de scripts do Office
Solucionar problemas de scripts do
Office
Artigo • 27/01/2024
À medida que você desenvolve scripts do Office, você pode cometer erros. Tudo bem,
está tudo bem. Você tem as ferramentas para ajudar a encontrar os problemas e fazer
com que seus scripts funcionem perfeitamente.
7 Observação
Erros de script
Os erros de Scripts do Office se enquadram em uma das duas categorias:
Erros de runtime
Erros de runtime ocorrem devido a problemas lógicos no script. Isso pode ser porque
um objeto usado no script não está na pasta de trabalho, uma tabela é formatada de
forma diferente do previsto, ou alguma outra pequena discrepância entre os requisitos
do script e a pasta de trabalho atual. O script a seguir gera um erro quando uma
planilha chamada "TestSheet" não está presente.
TypeScript
Alguns erros de runtime são causados por exceder os limites da plataforma, como
tentar gravar muitos dados ao mesmo tempo com Excel na Web. Consulte Limites e
requisitos da plataforma com scripts do Office para obter uma lista completa de
possíveis armadilhas.
Mensagens de console
Erros de tempo de compilação e de runtime exibem mensagens de erro no console
quando um script é executado. Eles dão um número de linha onde o problema foi
encontrado. Tenha em mente que a causa raiz de qualquer problema pode ser uma
linha de código diferente do indicado no console.
A imagem a seguir mostra a saída do console para o erro explícito any do compilador.
Observe o texto [5, 16] no início da cadeia de caracteres de erro. Isso indica que o erro
está na linha 5, começando no caractere 16.
A imagem a seguir mostra a saída do console para um erro de runtime. Aqui, o script
tenta adicionar uma planilha com o nome de uma planilha existente. Novamente,
observe a "Linha 2" anterior ao erro para mostrar qual linha investigar.
Logs de console
Imprimir mensagens na tela com a instrução console.log . Esses logs podem mostrar o
valor atual de variáveis ou quais caminhos de código estão sendo disparados. Para fazer
isso, chame console.log com qualquer objeto como parâmetro. Normalmente, um
string é o tipo mais fácil de ler no console.
TypeScript
) Importante
Ao usar o Excel com o Teams, os Scripts do Office só têm suporte no Teams na Web
(não no Teams para Windows, Mac, iOS ou Android).
7 Observação
A hora UTC de expiração do token de acesso é anterior à hora UTC atual.: passou
muito tempo entre entrar no serviço e agendar o script. Reabra o script no Editor
de Código ou recarregue a pasta de trabalho e tente agendar novamente.
Recursos de ajuda
O Stack Overflow é uma comunidade de desenvolvedores dispostos a ajudar com
problemas de codificação. Muitas vezes, você poderá encontrar a solução para o
problema por meio de uma pesquisa rápida do Stack Overflow. Caso contrário, faça sua
pergunta e marque-a com a marca "office-scripts". Certifique-se de menção você está
criando um Script do Office, não um Suplemento do Office.
Confira também
Práticas recomendadas nos Scripts do Office
Limites de plataforma com scripts do Office
Melhorar o desempenho dos scripts do Office
Solucionar problemas de scripts do Office em execução no PowerAutomate
Desfazer os efeitos do Scripts do Office
6 Colaborar conosco no
GitHub Comentários do Office Scripts
O Office Scripts é um projeto código aberto.
A fonte deste conteúdo pode
Selecione um link para fornecer
ser encontrada no GitHub, onde
comentários:
você também pode criar e
revisar problemas e solicitações
Abrir um problema de documentação
de pull. Para obter mais
informações, confira o nosso
Fornecer comentários sobre o produto
guia para colaboradores.
Solucionar problemas de scripts do
Office em execução no Power Automate
Artigo • 29/11/2023
Dica
Se você estiver apenas começando a usar scripts do Office com o Power Automate,
comece com Executar Scripts do Office com o Power Automate para saber mais
sobre as plataformas.
Algumas APIs de referência relativa lançam erros no Power Automate. Outros têm um
comportamento padrão que implica o estado de um usuário. Ao projetar seus scripts,
use referências absolutas para planilhas e intervalos. Isso torna o fluxo do Power
Automate consistente, mesmo que as planilhas sejam reorganizadas.
Classe Método
Gráfico activate
Range select
ノ Expand table
ノ Expand table
Classe Método
PivotTable refresh
Planilha refreshAllPivotTables
ノ Expand table
Confira também
Solucionar problemas de scripts do Office
Executar scripts do Office com o Power Automate
Documentação de referência do conector do Excel Online (Business)
Melhorar o desempenho dos scripts do
Office
Artigo • 07/04/2023
O motivo mais comum para um script lento é a comunicação excessiva com a pasta de
trabalho. Isso é particularmente perceptível ao usar Excel na Web. Em determinados
momentos, seu script sincroniza seus dados locais com os da pasta de trabalho. Isso
significa que todas as operações de gravação (como workbook.addWorksheet() ) só são
aplicadas à pasta de trabalho quando essa sincronização nos bastidores acontece. Da
mesma forma, todas as operações de leitura (como myRange.getValues() ) só obtêm
dados da pasta de trabalho para o script nesses momentos. Em ambos os casos, o script
busca informações antes de agir nos dados. Por exemplo, o código a seguir registrará
com precisão o número de linhas no intervalo usado.
TypeScript
Otimizações de desempenho
Você pode aplicar técnicas simples para ajudar a reduzir a comunicação com a nuvem.
Os padrões a seguir ajudam a acelerar seus scripts.
TypeScript
/**
* This script provides the count of negative numbers that are present
* in the used range of the current worksheet.
*/
function main(workbook: ExcelScript.Workbook) {
// Get the working range.
let usedRange = workbook.getActiveWorksheet().getUsedRange();
7 Observação
Como um experimento, tente substituir usedRangeValues no loop por
usedRange.getValues() . Você pode notar que o script leva consideravelmente mais
tempo para ser executado ao lidar com grandes intervalos.
TypeScript
/**
* This script adds a row to "MyTable", if that table is present.
*/
function main(workbook: ExcelScript.Workbook) {
let table = workbook.getTable("MyTable");
Confira também
Fundamentos para scripts do Office no Excel
Documentos web MDN: loops e iteração
Limites e requisitos da plataforma com
scripts do Office
Artigo • 12/01/2024
Há algumas limitações de plataforma das quais você deve estar ciente ao desenvolver
scripts do Office. Este artigo detalha o suporte do navegador e os limites de dados para
Scripts do Office para Excel.
Suporte à plataforma
Para utilizar os Scripts do Office, você precisará do seguinte.
1. Excel para Windows (versão 2210 ou superior), Excel para Mac ou Excel na
Web.
7 Observação
Se você atender aos requisitos e ainda não estiver vendo a guia Automatizar, é
possível que o seu administrador tenha desabilitado o recurso ou que haja outro
problema em seu ambiente. Siga as etapas em Guia Automatizar não aparecem ou
Scripts do Office não disponíveis para começar a usar os Scripts do Office.
Para usar scripts do Office no Power Automate , você deve ter uma licença comercial
do Microsoft 365.
Limites de dados
Há limites sobre a quantidade de dados do Excel que podem ser transferidos ao mesmo
tempo e quantas transações individuais do Power Automate podem ser realizadas.
Excel
Excel na Web tem as seguintes limitações ao fazer chamadas para a pasta de trabalho
por meio de um script.
Se você estiver encontrando erros ao lidar com conjuntos de dados grandes, tente usar
vários intervalos menores em vez de intervalos maiores. Para obter um exemplo,
consulte o exemplo Gravar um conjunto de dados grande . Você também pode usar
APIs como Range.getSpecialCells para direcionar células específicas em vez de grandes
intervalos.
Os limites do Excel que não são específicos para scripts do Office podem ser
encontrados no artigo Especificações e limites do Excel .
Power Automate
As limitações a seguir com a plataforma Power Automate são as que você
provavelmente encontrará.
Cada usuário é limitado a 1.600 chamadas para a ação Executar script por dia. Esse
limite é redefinido às 12:00 UTC.
Há um tempo limite de 120 segundos para operações síncronas do Power
Automate. Para scripts de longa duração, você deve otimizar seu script ou dividir
sua automação do Excel em várias chamadas de script.
O tamanho máximo dos parâmetros passados para a ação Executar script é de
30.000.000 bytes (28.6MB).
Limitações adicionais de uso da plataforma do Power Automate podem ser encontradas
nos artigos a seguir.
Você terá que usar HTTP com Azure AD ou outras ações equivalentes para extrair dados
ou empurrá-los para um serviço externo.
2 Aviso
Suporte do Teams
) Importante
Ao usar o Excel com o Teams, os Scripts do Office só têm suporte no Teams na Web
(não no Teams para Windows, Mac, iOS ou Android).
7 Observação
Acesso Condicional
As políticas de acesso condicional restringem o acesso ao SharePoint e ao OneDrive
para dispositivos não gerenciados. Se o dispositivo não for gerenciado pelo locatário,
talvez você não tenha acesso a scripts específicos ou só poderá acessá-los por meio do
navegador.
Se o script for bloqueado por políticas de Acesso Condicional, você receberá uma das
duas mensagens de erro. Essas mensagens também aparecerão no Power Automate se
o fluxo for executado de um dispositivo não gerenciado.
"Devido a políticas organizacionais, você não pode acessar esse recurso desse
dispositivo não confiável."
"Não é possível localizar esse script. Pode ter sido excluído por outro usuário." (Se
sua versão do Excel for mais antiga.)
) Importante
Usar uma versão mais antiga do Excel para abrir pastas de trabalho com scripts
compartilhados neles não tem efeito sobre o script em si.
Confira também
Especificações e limites do Excel
Solucionar problemas de scripts do Office
Desfazer os efeitos do Scripts do Office
Melhorar o desempenho dos scripts do Office
Restrições de TypeScript em Scripts do
Office
Artigo • 07/04/2023
Explícita any
Você não pode declarar explicitamente uma variável como do tipo any em Scripts do
Office (ou seja, let value: any; ). O any tipo causa problemas quando processado pelo
Excel. Por exemplo, é Range necessário saber que um valor é um string , number ou
boolean . Você receberá um erro de tempo de compilação (um erro antes de executar o
script) se alguma variável for explicitamente definida como o any tipo no script.
Na captura de tela anterior, [2, 14] Explicit Any is not allowed indica que a linha nº
2, a coluna #14 define any o tipo. Isso ajuda você a localizar o erro.
Para contornar esse problema, sempre defina o tipo da variável. Se você não tiver
certeza sobre o tipo de variável, poderá usar um tipo de união . Isso pode ser útil para
variáveis que contêm Range valores, que podem ser do tipo string , number ou boolean
(o tipo de Range valores é uma união desses: string | number | boolean ).
Implícita any
Tipos de variável TypeScript podem ser definidos implicitamente . Se o compilador
TypeScript não conseguir determinar o tipo de uma variável (porque o tipo não está
definido explicitamente ou a inferência de tipo não é possível), é um erro implícito any
e você receberá um erro de tempo de compilação.
O caso mais comum em qualquer implícito any está em uma declaração variável, como
let value; . Há duas maneiras de evitar isso:
Funções geradoras
Array.sort
eval não tem suporte
A função eval do JavaScript não tem suporte por motivos de segurança.
Identificadores restritos
As palavras a seguir não podem ser usadas como identificadores em um script. São
termos reservados.
Excel
ExcelScript
console
TypeScript
O exemplo de código a seguir mostra uma união sem suporte entre ExcelScript.Table
e uma interface personalizada MyTable .
TypeScript
interface MyTable {
getName(): string
}
O exemplo de código a seguir demonstra esse cenário. Ele gera um erro que diz failed
to load [code] [library] .
TypeScript
Avisos de desempenho
O linter do Editor de Código fornece avisos se o script pode ter problemas de
desempenho. Os casos e como contornar eles estão documentados em Melhorar o
desempenho dos scripts do Office.
Confira também
Fundamentos para scripts do Office no Excel
Melhorar o desempenho dos scripts do Office
Desfazer as alterações feitas pelos
Scripts do Office
Artigo • 07/04/2023
Não é possível desfazer alterações feitas na pasta de trabalho do Excel por um script
com o comando Desfazer do Excel. Em vez disso, você deve restaurar uma versão
anterior da pasta de trabalho do armazenamento em nuvem.
Histórico de versão
O histórico de versões do Office é uma maneira fácil de restaurar uma pasta de trabalho
mais antiga por meio da interface do usuário do Excel. O recurso funciona apenas para
arquivos armazenados no OneDrive ou no SharePoint Online.
Na pasta de trabalho do Excel na qual o script foi executado, use estas etapas para
desfazer os efeitos:
Confira também
Exibir as versões anteriores de arquivos do Office
Exemplos e cenários de Scripts do Office
Artigo • 28/12/2023
Esta seção contém soluções baseadas em Scripts do Office que ajudam os usuários
finais a obter automação de tarefas diárias. Ele contém cenários realistas que os
usuários enfrentam e fornece soluções detalhadas.
As noções básicas mostram exemplos comuns que compõem scripts maiores. Eles
são categorizados com base em um recurso comum do Excel.
Cenários rápidos são exemplos que estão mais envolvidos ou resolvem um
problema específico.
Cenários entre aplicativos são exemplos que usam o Power Automate com um ou
mais Scripts do Office como partes integrais do fluxo.
Cenários do mundo real são alguns exemplos maiores emoldurados como
soluções completas e reais.
As contribuições da comunidade são exemplos de membros da comunidade de
Scripts do Office, muitas vezes de natureza leve.
) Importante
Noções básicas
ノ Expandir a tabela
Project Detalhes
Intervalos: trabalhar com a grade Esses exemplos mostram como trabalhar o Range objeto, que
é central para a maioria dos scripts.
Exemplos de validação de dados: Esses exemplos mostram como usar a validação de dados
listas suspensas, prompts e pop- para exigir condições específicas para dados de célula e
ups de aviso como o usuário é alertado para essas regras.
Exemplos de data Uma coleção de exemplos que mostram como traduzir entre
formatos de data JavaScript e Excel.
Project Detalhes
Exemplos de imagem Este exemplo adiciona uma imagem a uma pasta de trabalho
e copia uma imagem entre planilhas.
Exemplos de visibilidade de linha Uma coleção de exemplos que demonstram como mostrar,
e coluna ocultar e congelar linhas e colunas.
Cenários rápidos
Baixe as pastas de trabalho de exemplo incluídas em cada exemplo. Isso permite ignorar
a instalação e entender o conceito principal que o exemplo demonstra.
ノ Expandir a tabela
Project Detalhes
Copiar várias tabelas do Excel Este exemplo combina dados de várias tabelas do Excel em uma
em uma única tabela única tabela que inclui todas as linhas.
Criar um sumário da pasta de Este exemplo cria uma tabela de conteúdo com links para cada
trabalho planilha.
Gerenciar o modo de cálculo Este exemplo mostra como usar o modo de cálculo e calcular
no Excel métodos no Excel usando scripts do Office.
Mover linhas entre tabelas Este exemplo mostra como mover linhas entre tabelas salvando
filtros e processando e reaplicando os filtros.
Notificar as pessoas com Este exemplo adiciona comentários a uma célula, incluindo
comentários @mentioning um colega.
Saída de dados do Excel como Esta solução mostra como gerar dados de tabela do Excel como
JSON JSON a serem usados no Power Automate.
Remover hiperlinks de cada Este exemplo limpa todos os hiperlinks da planilha atual.
célula em uma planilha do
Excel
Definir formatação condicional Este exemplo aplica a formatação com base em valores em
para comparações entre colunas adjacentes. Ele também obtém a entrada do usuário
Project Detalhes
Usar chamadas de busca Este exemplo usa fetch para obter informações do GitHub para
externas o script.
ノ Expandir a tabela
Project Detalhes
Combinar planilhas Este exemplo usa Scripts do Office e Power Automate para extrair dados
em uma única pasta de outras pastas de trabalho em uma única pasta de trabalho.
de trabalho
Converter arquivos Este exemplo usa Scripts do Office e Power Automate para criar arquivos
CSV em pastas de .xlsx de arquivos .csv.
trabalho do Excel
Pastas de trabalho de Este exemplo usa Scripts do Office e Power Automate para fazer
referência cruzada referência cruzada e validar informações em diferentes pastas de
trabalho.
Email gráfico e Este exemplo usa scripts do Office e ações do Power Automate para criar
imagens de tabela um gráfico e enviar esse gráfico como uma imagem por email.
Registrar alterações Este exemplo usa um fluxo agendado do Power Automate para registrar
diárias no Excel e leituras diárias e relatar as alterações.
denunciá-las com um
fluxo
Escrever um grande Este exemplo mostra como trabalhar com um intervalo grande como
conjuntos de dados subranges menores. Isso ajuda os fluxos a lidar com limites de
transferência de dados e tempo limite de operação.
Cenários do mundo real
Os Scripts do Office podem automatizar partes de sua rotina diária. Essas tarefas diárias
geralmente existem em ecossistemas exclusivos, com pastas de trabalho do Excel que
são configuradas de maneiras específicas. Esses exemplos de cenário maiores
demonstram casos de uso do mundo real. Eles incluem os scripts do Office e as pastas
de trabalho, para que você possa ver o cenário de ponta a ponta.
ノ Expandir a tabela
Cenário Detalhes
Analisar downloads da Esse cenário apresenta um script que analisa registros de tráfego da
Web Web para determinar o país de origem de um usuário. Ele mostra as
habilidades de análise de texto, usando subfunções em scripts,
aplicando formatação condicional e trabalhando com tabelas.
Buscar e representar Esse cenário usa um Script do Office para extrair dados de uma fonte
graficamente os dados do externa (o banco de dados NOAA Tides and Currents ) e grafar as
nível de água do NOAA informações resultantes. Ele destaca as habilidades de usar fetch
para obter dados e usar gráficos.
Agendar entrevistas no Esse cenário mostra como usar uma planilha do Excel para gerenciar
Teams os horários de reunião da entrevista e fazer um fluxo para agendar
reuniões no Teams.
Lembretes de tarefa como Esse cenário usa um Script do Office em um fluxo do Power
cartões do Teams Automate para enviar lembretes aos colegas de trabalho para
atualizar o status de um projeto. Ele destaca as habilidades de
integração do Power Automate e transferência de dados de e para
scripts.
ノ Expandir a tabela
Project Detalhes
Jogo da Vida O blog "Ready Player Zero" de Yutao Huang na Excel Tech Community
inclui um script para modelar O Jogo da Vida de John Conway.
Botão Relógio do Este script foi contribuído por Brian Gonzalez . O cenário apresenta um
Sistema script e um botão de script que registra a hora atual.
Animação de Este roteiro foi contribuído por Leslie Black no espírito da temporada de
saudações de férias! É um script divertido que mostra uma árvore de Natal cantando no
estações Excel usando scripts do Office.
Deixe um comentário
Sinta-se à vontade para deixar um comentário, fazer uma sugestão ou registrar um
problema usando a seção Comentários na parte inferior da página de documentação da
amostra específica.
Intervalos: trabalhar com a grade em
Scripts do Office
Artigo • 05/12/2023
Os exemplos a seguir são scripts simples para você experimentar em suas próprias
pastas de trabalho. Eles formam os blocos de construção para soluções maiores.
Expanda esses scripts para estender sua solução e resolver problemas comuns.
TypeScript
TypeScript
TypeScript
TypeScript
// Get the cell to the right of the active cell and set its value and
color.
let rightCell = activeCell.getOffsetRange(0,1);
rightCell.setValue("Right cell");
console.log(`The right cell's address is: ${rightCell.getAddress()}`);
rightCell.getFormat().getFont().setColor("Magenta");
rightCell.getFormat().getFill().setColor("Cyan");
// Get the cell to the above of the active cell and set its value and
color.
// Note that this operation will fail if the active cell is in the top
row.
let aboveCell = activeCell.getOffsetRange(-1, 0);
aboveCell.setValue("Above cell");
console.log(`The above cell's address is: ${aboveCell.getAddress()}`);
aboveCell.getFormat().getFont().setColor("White");
aboveCell.getFormat().getFill().setColor("Black");
}
TypeScript
// Get the cell that's one row above and one column to the left of the
active cell.
let cornerCell = activeCell.getOffsetRange(-1,-1);
// Get a range that includes all the cells surrounding the active cell.
let surroundingRange = cornerCell.getResizedRange(2, 2)
// Copy the formatting from the active cell to the new range.
surroundingRange.copyFrom(
activeCell, /* The source range. */
ExcelScript.RangeCopyType.formats /* What to copy. */
);
}
TypeScript
// Set the color of the current cell to that random hexadecimal code.
range.getCell(row, col).getFormat().getFill().setColor(colorString);
}
}
}
TypeScript
Fórmula única
Esse script define a fórmula de uma célula e exibe como o Excel armazena a fórmula e o
valor da célula separadamente.
TypeScript
// Set A1 to 2.
let a1 = selectedSheet.getRange("A1");
a1.setValue(2);
TypeScript
TypeScript
// In each formula range: get the current value, clear the contents, and
set the value as the old one.
// This removes the formula but keeps the result.
formulaCells.getAreas().forEach((range) => {
let currentValues = range.getValues();
range.clear(ExcelScript.ClearApplyTo.contents);
range.setValues(currentValues);
});
}
Confira também
"Noções básicas do intervalo" de Sudhi Ramamurthy no YouTube
Exemplos e cenários de Scripts do Office
Tutorial: Criar e formatar uma tabela do Excel
Exemplos de formatação condicional
Artigo • 30/12/2023
Esta pasta de trabalho de exemplo contém planilhas prontas para teste com os scripts
de exemplo.
Valor da célula
A formatação condicional de valor celular aplica um formato a cada célula que contém
um valor que atende a determinados critérios. Isso ajuda a identificar rapidamente
pontos de dados importantes.
TypeScript
ratingColumn.addConditionalFormat(ExcelScript.ConditionalFormatType.cellValu
e).getCellValue();
// Create the condition, in this case when the cell value is less than
60
let rule: ExcelScript.ConditionalCellValueRule = {
formula1: "60",
operator: ExcelScript.ConditionalCellValueOperator.lessThan
};
cellValueConditionalFormatting.setRule(rule);
Escala de cores
A formatação condicional de escala de cores aplica um gradiente de cor em um
intervalo. As células com os valores mínimos e máximos do intervalo usam as cores
especificadas, com outras células dimensionadas proporcionalmente. Uma cor opcional
do ponto médio fornece mais contraste.
Este exemplo a seguir aplica uma escala de cores vermelha, branca e azul ao intervalo
selecionado.
TypeScript
// Set the colors for the three parts of the scale: minimum, midpoint,
and maximum.
conditionalFormatting.getColorScale().setCriteria({
minimum: {
color: "#5A8AC6", /* A pale blue. */
type:
ExcelScript.ConditionalFormatColorCriterionType.lowestValue
},
midpoint: {
color: "#FCFCFF", /* Slightly off-white. */
formula: '=50', type:
ExcelScript.ConditionalFormatColorCriterionType.percentile
},
maximum: {
color: "#F8696B", /* A pale red. */
type:
ExcelScript.ConditionalFormatColorCriterionType.highestValue
}
});
}
Barra de dados
A formatação condicional da barra de dados adiciona uma barra parcialmente
preenchida no plano de fundo de uma célula. A integridade da barra é definida pelo
valor na célula e pelo intervalo especificado pelo formato.
TypeScript
Conjunto de ícones
A formatação condicional do conjunto de ícones adiciona ícones a cada célula em um
intervalo. Os ícones são provenientes de um conjunto especificado. Os ícones são
aplicados com base em uma matriz ordenada de critérios, com cada mapeamento de
critério em um único ícone.
TypeScript
conditionalFormatting.getIconSet().setStyle(ExcelScript.IconSet.threeTraffic
Lights1);
conditionalFormatting.getIconSet().setCriteria([
{ // Use the red light as the default for positive values.
formula: '=0', operator:
ExcelScript.ConditionalIconCriterionOperator.greaterThanOrEqual,
type: ExcelScript.ConditionalFormatIconRuleType.number
},
{ // The yellow light is applied to all values 6 and greater. The
replaces the red light when applicable.
formula: '=6', operator:
ExcelScript.ConditionalIconCriterionOperator.greaterThanOrEqual,
type: ExcelScript.ConditionalFormatIconRuleType.number
},
{ // The green light is applied to all values 8 and greater. As with
the yellow light, the icon is replaced when the new criteria is met.
formula: '=8', operator:
ExcelScript.ConditionalIconCriterionOperator.greaterThanOrEqual,
type: ExcelScript.ConditionalFormatIconRuleType.number
}
]);
}
Predefinição
A formatação condicional predefinida aplica um formato especificado a um intervalo
com base em cenários comuns, como células em branco e valores duplicados. A lista
completa de critérios predefinidos é fornecida pelo enumeração
ConditionalFormatPresetCriterion .
TypeScript
// Set a rule to apply the conditional format when cells are left blank.
const blankRule: ExcelScript.ConditionalPresetCriteriaRule = {
criterion: ExcelScript.ConditionalFormatPresetCriterion.blanks
};
presetFormat.setRule(blankRule);
}
Comparação de texto
A formatação condicional de comparação de texto formata células com base no
conteúdo de texto. A formatação é aplicada quando o texto começa com, contém,
termina ou não contém a subconserção fornecida.
O exemplo a seguir marca qualquer célula no intervalo que contém o texto "revisão".
TypeScript
// Set the conditional format to provide a light red fill and make the
font bold.
textConditionFormat.getFormat().getFill().setColor("#F8696B");
textConditionFormat.getFormat().getFont().setBold(true);
// Apply the condition rule that the text contains with "review".
const textRule: ExcelScript.ConditionalTextComparisonRule = {
operator: ExcelScript.ConditionalTextOperator.contains,
text: "review"
};
textConditionFormat.setRule(textRule);
}
Parte superior/inferior
A formatação condicional superior/inferior marca os valores mais altos ou mais baixos
em um intervalo. Os altos e baixos são baseados em valores brutos ou percentuais.
O exemplo a seguir aplica a formatação condicional para mostrar os dois números mais
altos do intervalo.
TypeScript
// Set the fill color to green and the font to bold for the top 2 values
in the range.
const topBottomFormat =
dataRange.addConditionalFormat(ExcelScript.ConditionalFormatType.topBottom).
getTopBottom();
topBottomFormat.getFormat().getFill().setColor("green");
topBottomFormat.getFormat().getFont().setBold(true);
topBottomFormat.setRule({
rank: 2, /* The numeric threshold. */
type: ExcelScript.ConditionalTopBottomCriterionType.topItems /* The
type of the top/bottom condition. */
});
}
Condições personalizadas
A formatação condicional personalizada permite que fórmulas complexas definam
quando a formatação é aplicada. Use isso quando as outras opções não forem
suficientes.
TypeScript
TypeScript
// Apply the data validation to the first cell in the selected range.
const targetCell = selectedRange.getCell(0,0);
const dataValidation = targetCell.getDataValidation();
// Set the content of the dropdown list.
dataValidation.setRule({
list: {
inCellDropDown: true,
source: dataValidationListString
}
});
}
TypeScript
/**
* This script creates a text prompt that's shown in C2:C8 when a user
enters the cell.
*/
function main(workbook: ExcelScript.Workbook) {
// Get the data validation object for C2:C8 in the current worksheet.
const selectedSheet = workbook.getActiveWorksheet();
const dataValidation =
selectedSheet.getRange("C2:C8").getDataValidation();
TypeScript
/**
* This script creates a data validation rule for the range B2:B5.
* All values in that range must be a positive number.
* Attempts to enter other values are blocked and an error message appears.
*/
function main(workbook: ExcelScript.Workbook) {
// Get the range B2:B5 in the active worksheet.
const currentSheet = workbook.getActiveWorksheet();
const positiveNumberOnlyCells = currentSheet.getRange("B2:B5");
// Create an alert to appear when data other than positive numbers are
entered.
const positiveNumberOnlyAlert: ExcelScript.DataValidationErrorAlert = {
message: "Positive numbers only.",
showAlert: true,
style: ExcelScript.DataValidationAlertStyle.stop,
title: "Invalid data"
};
rangeDataValidation.setErrorAlert(positiveNumberOnlyAlert);
}
Exemplos de JavaScript Date
Artigo • 11/09/2023
TypeScript
// Get the current date and time with the JavaScript Date object.
let date = new Date(Date.now());
TypeScript
Confira também
Usar objetos JavaScript internos em Scripts do Office
Adicionar imagens a uma pasta de
trabalho
Artigo • 25/10/2023
Este exemplo mostra como trabalhar com imagens usando um Script do Office no Excel.
Cenário
As imagens ajudam com identidade visual, identidade visual e modelos. Eles ajudam a
fazer uma pasta de trabalho mais do que apenas uma tabela gigante.
O primeiro exemplo copia uma imagem de uma planilha para outra. Isso pode ser usado
para colocar o logotipo da sua empresa na mesma posição em cada planilha.
O segundo exemplo copia uma imagem de uma URL. Isso pode ser usado para copiar
fotos armazenadas por um colega em uma pasta compartilhada em uma pasta de
trabalho relacionada. Observe que esse exemplo não pode ser adaptado para trabalhar
com um arquivo de imagem local, pois não há suporte para scripts do Office.
TypeScript
/**
* This script transfers an image from one worksheet to another.
*/
function main(workbook: ExcelScript.Workbook)
{
// Get the worksheet with the image on it.
let firstWorksheet = workbook.getWorksheet("FirstSheet");
// Get the first image from the worksheet.
// If a script added the image, you could add a name to make it easier to
find.
let image: ExcelScript.Image;
firstWorksheet.getShapes().forEach((shape, index) => {
if (shape.getType() === ExcelScript.ShapeType.image) {
image = shape.getImage();
return;
}
});
) Importante
Este exemplo não funcionará no Power Automate por causa da fetch chamada.
TypeScript
/**
* Converts an ArrayBuffer containing a .png image into a base64-encoded
string.
*/
function convertToBase64(input: ArrayBuffer) {
const uInt8Array = new Uint8Array(input);
const count = uInt8Array.length;
Ocultar colunas
Este script oculta as colunas "D", "F" e "J".
TypeScript
TypeScript
TypeScript
TypeScript
TypeScript
Dica
Copie as informações filtradas na pasta de trabalho usando Range.copyFrom .
Adicione a linha a seguir ao final do script para criar uma nova planilha com os
dados filtrados.
TypeScript
workbook.addWorksheet().getRange("A1").copyFrom(table.getRange());
Filtrar um valor
O exemplo anterior filtra uma tabela com base em uma lista de valores incluídos. Para
excluir um valor específico da tabela, você precisa fornecer a lista de todos os outros
valores da coluna. Este exemplo usa uma função columnToSet para converter uma
coluna em um conjunto de valores exclusivos. Esse conjunto então tem o valor excluído
("Station-1") removido.
TypeScript
/**
* Convert a column into a set so it only contains unique values.
*/
function columnToSet(column: ExcelScript.TableColumn): string[] {
const range = column.getRangeBetweenHeaderAndTotal().getValues() as
string[][];
const columnSet: string[] = [];
range.forEach((value) => {
if (!columnSet.includes(value[0])) {
columnSet.push(value[0]);
}
});
return columnSet;
}
Baixe table-with-filter.xlsx para uma pasta de trabalho pronta para uso. Adicione o script
a seguir para experimentar o exemplo por conta própria!
TypeScript
// Get the table header above the current cell by referencing its column.
const entireColumn = cell.getEntireColumn();
const intersect = entireColumn.getIntersection(currentTable.getRange());
const headerCellValue = intersect.getCell(0, 0).getValue() as string;
Dica
Se você quiser saber mais sobre como salvar o filtro antes de limpá-lo (e se aplicar
novamente posteriormente), consulte Mover linhas entre tabelas salvando filtros,
um exemplo mais avançado.
TypeScript
// Set the formula of the fourth column to be the product of the values
found
// in that row's second and third columns.
const combinedColumn = table.getColumn(4).getRangeBetweenHeaderAndTotal();
combinedColumn.setFormula(`=[@[${nameOfColumn2}]]*[@[${nameOfColumn3}]]`);
}
Antes do script
ノ Expandir a tabela
Janeiro 45 5
Fevereiro 45 3
Março 45 6
Após o script
ノ Expandir a tabela
Janeiro 45 5 225
Fevereiro 45 3 135
Março 45 6 270
6 Colaborar conosco no
GitHub Comentários do Office Scripts
O Office Scripts é um projeto código aberto.
A fonte deste conteúdo pode
Selecione um link para fornecer
ser encontrada no GitHub, onde
você também pode criar e comentários:
revisar problemas e solicitações
Abrir um problema de documentação
de pull. Para obter mais
informações, confira o nosso
Fornecer comentários sobre o produto
guia para colaboradores.
Combinar dados de várias tabelas do
Excel em uma única tabela
Artigo • 25/10/2023
Este exemplo combina dados de várias tabelas do Excel em uma única tabela que inclui
todas as linhas. Ele pressupõe que todas as tabelas que estão sendo usadas tenham a
mesma estrutura.
TypeScript
// Get the header values for the first table in the workbook.
// This also saves the table list before we add the new, combined table.
const tables = workbook.getTables();
const headerValues = tables[0].getHeaderRowRange().getTexts();
console.log(headerValues);
// Add the data from each table in the workbook to the new table.
const combinedTable = newSheet.addTable(targetRange.getAddress(), true);
for (let table of tables) {
let dataValues = table.getRangeBetweenHeaderAndTotal().getTexts();
let rowCount = table.getRowCount();
// If the table is not empty, add its rows to the combined table.
if (rowCount > 0) {
combinedTable.addRows(-1, dataValues);
}
}
}
TypeScript
// Create a new table with the same headers as the other tables.
const headerValues = workbook.getWorksheet(sheetNames[0]).getTables()
[0].getHeaderRowRange().getTexts();
const targetRange =
newSheet.getRange('A1').getResizedRange(headerValues.length-1,
headerValues[0].length-1);
targetRange.setValues(headerValues);
const combinedTable = newSheet.addTable(targetRange.getAddress(), true);
Este exemplo mostra como criar uma tabela de conteúdo para a pasta de trabalho. Cada
entrada na tabela de conteúdo é um hiperlink para uma das planilhas da pasta de
trabalho.
TypeScript
// Loop through all worksheets in the workbook, except the first one.
for (let i = 1; i < worksheets.length; i++) {
// Create a row for each worksheet with its index and linked name.
tocRange.getCell(i, 0).setValue(i);
tocRange.getCell(i, 1).setHyperlink({
textToDisplay: worksheets[i].getName(),
documentReference: `'${worksheets[i].getName()}'!A1`
});
};
7 Observação
Para o script, uma linha em branco é qualquer linha em que não há dados. A linha
pode ter formatação.
// Return the number of empty rows for use in a Power Automate flow.
return emptyRows;
}
Código de exemplo: contagem de linhas em
branco em todas as planilhas
TypeScript
// Return the number of empty rows for use in a Power Automate flow.
return emptyRows;
}
Gerenciar o modo de cálculo no Excel
Artigo • 30/03/2023
Este exemplo mostra como usar o modo de cálculo e calcular métodos no Excel usando
scripts do Office. Você pode experimentar o script em qualquer arquivo do Excel.
Cenário
Pastas de trabalho com um grande número de fórmulas podem demorar um pouco
para serem recalculadas. Em vez de deixar o Excel controlar quando os cálculos
acontecem, você pode gerenciá-los como parte do script. Isso ajudará com o
desempenho em determinados cenários.
O script de exemplo define o modo de cálculo como manual. Isso significa que a pasta
de trabalho só recalculará fórmulas quando o script o informar (ou você calculará
manualmente por meio da interface do usuário ). Em seguida, o script exibe o modo
de cálculo atual e recalcula totalmente toda a pasta de trabalho.
workbook.getApplication().setCalculationMode(ExcelScript.CalculationMode.man
ual);
// Get and log the calculation mode.
const calcMode = workbook.getApplication().getCalculationMode();
console.log(calcMode);
// Manually calculate the file.
workbook.getApplication().calculate(ExcelScript.CalculationType.full);
}
TypeScript
// You can change these names to match the data in your workbook.
const TARGET_TABLE_NAME = 'Table1';
const SOURCE_TABLE_NAME = 'Table2';
// Get the intersection between table address and the entire row where
we found the match. This provides the address of the range to remove.
let address =
sourceRange.getIntersection(sourceRange.getCell(i,0).getEntireRow()).getAddr
ess();
rowAddressToRemove.push(address);
}
}
sourceTable.getColumnByName(columnName).getFilter().apply(originalTableFilte
rs[columnName]);
});
}
Cenário de exemplo
O líder da equipe mantém o agendamento de turnos. Eles atribuem uma ID do
funcionário ao registro de turno. Se o líder da equipe quiser notificar o funcionário, ele
adicionará um comentário que @mentions o funcionário. O funcionário é enviado por
email com uma mensagem personalizada da planilha. Posteriormente, o funcionário
pode exibir a pasta de trabalho e responder ao comentário por conveniência.
Solução
1. O script extrai informações de funcionários da planilha do funcionário.
2. Em seguida, o script adiciona um comentário (incluindo o email relevante do
funcionário) à célula apropriada no registro de turno.
3. Os comentários existentes na célula são removidos antes de adicionar o novo
comentário.
TypeScript
Os dados da tabela do Excel podem ser representados como uma matriz de objetos na
forma de JSON . Cada objeto representa uma linha na tabela. Isso ajuda a extrair os
dados do Excel em um formato consistente que é visível para o usuário. Em seguida, os
dados podem ser dados a outros sistemas por meio de fluxos do Power Automate.
Uma variação desse exemplo também inclui os hiperlinks em uma das colunas de
tabela. Isso permite que níveis adicionais de dados celulares sejam exibidos no JSON.
7 Observação
TypeScript
return objectArray;
}
interface TableData {
"Event ID": string
Date: string
Location: string
Capacity: string
Speakers: string
}
[{
"Event ID": "E107",
"Date": "2020-12-10",
"Location": "Montgomery",
"Capacity": "10",
"Speakers": "Debra Berger"
}, {
"Event ID": "E108",
"Date": "2020-12-11",
"Location": "Montgomery",
"Capacity": "10",
"Speakers": "Delia Dennis"
}, {
"Event ID": "E109",
"Date": "2020-12-12",
"Location": "Montgomery",
"Capacity": "10",
"Speakers": "Diego Siciliani"
}, {
"Event ID": "E110",
"Date": "2020-12-13",
"Location": "Boise",
"Capacity": "25",
"Speakers": "Gerhart Moller"
}, {
"Event ID": "E111",
"Date": "2020-12-14",
"Location": "Salt Lake City",
"Capacity": "20",
"Speakers": "Grady Archie"
}, {
"Event ID": "E112",
"Date": "2020-12-15",
"Location": "Fremont",
"Capacity": "25",
"Speakers": "Irvin Sayers"
}, {
"Event ID": "E113",
"Date": "2020-12-16",
"Location": "Salt Lake City",
"Capacity": "20",
"Speakers": "Isaiah Langer"
}, {
"Event ID": "E114",
"Date": "2020-12-17",
"Location": "Salt Lake City",
"Capacity": "20",
"Speakers": "Johanna Lorenz"
}]
7 Observação
TypeScript
let object = {}
for (let j = 0; j < values[i].length; j++) {
// For the 4th column (0 index), extract the hyperlink and use that
instead of text.
if (j === 4) {
object[objectKeys[j]] = range.getCell(i, j).getHyperlink().address;
} else {
object[objectKeys[j]] = values[i][j];
}
}
objectArray.push(object as TableData);
}
return objectArray;
}
interface TableData {
"Event ID": string
Date: string
Location: string
Capacity: string
"Search link": string
Speakers: string
}
[{
"Event ID": "E107",
"Date": "2020-12-10",
"Location": "Montgomery",
"Capacity": "10",
"Search link": "https://www.google.com/search?q=Montgomery",
"Speakers": "Debra Berger"
}, {
"Event ID": "E108",
"Date": "2020-12-11",
"Location": "Montgomery",
"Capacity": "10",
"Search link": "https://www.google.com/search?q=Montgomery",
"Speakers": "Delia Dennis"
}, {
"Event ID": "E109",
"Date": "2020-12-12",
"Location": "Montgomery",
"Capacity": "10",
"Search link": "https://www.google.com/search?q=Montgomery",
"Speakers": "Diego Siciliani"
}, {
"Event ID": "E110",
"Date": "2020-12-13",
"Location": "Boise",
"Capacity": "25",
"Search link": "https://www.google.com/search?q=Boise",
"Speakers": "Gerhart Moller"
}, {
"Event ID": "E111",
"Date": "2020-12-14",
"Location": "Salt Lake City",
"Capacity": "20",
"Search link": "https://www.google.com/search?q=salt+lake+city",
"Speakers": "Grady Archie"
}, {
"Event ID": "E112",
"Date": "2020-12-15",
"Location": "Fremont",
"Capacity": "25",
"Search link": "https://www.google.com/search?q=Fremont",
"Speakers": "Irvin Sayers"
}, {
"Event ID": "E113",
"Date": "2020-12-16",
"Location": "Salt Lake City",
"Capacity": "20",
"Search link": "https://www.google.com/search?q=salt+lake+city",
"Speakers": "Isaiah Langer"
}, {
"Event ID": "E114",
"Date": "2020-12-17",
"Location": "Salt Lake City",
"Capacity": "20",
"Search link": "https://www.google.com/search?q=salt+lake+city",
"Speakers": "Johanna Lorenz"
}]
Este exemplo limpa todos os hiperlinks da planilha atual. Ele atravessa a planilha e, se
houver algum hiperlink associado à célula, ele limpa o hiperlink e mantém o valor da
célula como está. Também registra o tempo necessário para concluir a travessia.
7 Observação
TypeScript
cell.getFormat().getFont().setUnderline(ExcelScript.RangeUnderlineStyle.none
);
cell.getFormat().getFont().setColor('Black');
clearedCount++;
}
}
}
TypeScript
TypeScript
Dica
Copie as informações filtradas na pasta de trabalho usando Range.copyFrom .
Adicione a linha a seguir ao final do script para criar uma nova planilha com os
dados filtrados.
TypeScript
workbook.addWorksheet().getRange("A1").copyFrom(table.getRange());
Filtrar um valor
O exemplo anterior filtra uma tabela com base em uma lista de valores incluídos. Para
excluir um valor específico da tabela, você precisa fornecer a lista de todos os outros
valores da coluna. Este exemplo usa uma função columnToSet para converter uma
coluna em um conjunto de valores exclusivos. Esse conjunto então tem o valor excluído
("Station-1") removido.
TypeScript
/**
* Convert a column into a set so it only contains unique values.
*/
function columnToSet(column: ExcelScript.TableColumn): string[] {
const range = column.getRangeBetweenHeaderAndTotal().getValues() as
string[][];
const columnSet: string[] = [];
range.forEach((value) => {
if (!columnSet.includes(value[0])) {
columnSet.push(value[0]);
}
});
return columnSet;
}
Baixe table-with-filter.xlsx para uma pasta de trabalho pronta para uso. Adicione o script
a seguir para experimentar o exemplo por conta própria!
TypeScript
// Get the table header above the current cell by referencing its column.
const entireColumn = cell.getEntireColumn();
const intersect = entireColumn.getIntersection(currentTable.getRange());
const headerCellValue = intersect.getCell(0, 0).getValue() as string;
Dica
Se você quiser saber mais sobre como salvar o filtro antes de limpá-lo (e se aplicar
novamente posteriormente), consulte Mover linhas entre tabelas salvando filtros,
um exemplo mais avançado.
TypeScript
// Set the formula of the fourth column to be the product of the values
found
// in that row's second and third columns.
const combinedColumn = table.getColumn(4).getRangeBetweenHeaderAndTotal();
combinedColumn.setFormula(`=[@[${nameOfColumn2}]]*[@[${nameOfColumn3}]]`);
}
Antes do script
ノ Expandir a tabela
Janeiro 45 5
Fevereiro 45 3
Março 45 6
Após o script
ノ Expandir a tabela
Janeiro 45 5 225
Fevereiro 45 3 135
Março 45 6 270
6 Colaborar conosco no
GitHub Comentários do Office Scripts
O Office Scripts é um projeto código aberto.
A fonte deste conteúdo pode
Selecione um link para fornecer
ser encontrada no GitHub, onde
você também pode criar e comentários:
revisar problemas e solicitações
Abrir um problema de documentação
de pull. Para obter mais
informações, confira o nosso
Fornecer comentários sobre o produto
guia para colaboradores.
Definir formatação condicional para
comparações entre colunas
Artigo • 18/09/2023
/**
* Formats a range on the current sheet based on values in an adjacent
column.
* @param rangeAddress The A1-notation range to format.
* @param compareTo The adjacent column to compare against.
* @param colorIfGreater The color of the cell if the value is greater than
the adjacent column.
* @param colorIfEqual The color of the cell if the value is equal to the
adjacent column.
* @param colorIfLess The color of the cell if the value is less than the
adjacent column.
*/
function main(
workbook: ExcelScript.Workbook,
rangeAddress: string, compareTo: "Left" | "Right",
colorIfGreater: "Red" | "Green" | "Yellow" | "None",
colorIfLess: "Red" | "Green" | "Yellow" | "None",
colorIfEqual: "Red" | "Green" | "Yellow" | "None"
) {
// Get the specified range.
const selectedSheet = workbook.getActiveWorksheet();
const range = selectedSheet.getRange(rangeAddress);
// Get the address of the first adjacent cell of the adjacent column.
let adjacentColumn: string;
if (compareTo == "Left") {
adjacentColumn = range.getColumnsBefore().getCell(0, 0).getAddress();
} else {
adjacentColumn = range.getColumnsAfter().getCell(0, 0).getAddress();
}
range.addConditionalFormat(ExcelScript.ConditionalFormatType.cellValue).getC
ellValue(),
colorIfGreater,
formula,
ExcelScript.ConditionalCellValueOperator.greaterThan);
setConditionalFormatting(
range.addConditionalFormat(ExcelScript.ConditionalFormatType.cellValue).getC
ellValue(),
colorIfEqual,
formula,
ExcelScript.ConditionalCellValueOperator.equalTo);
setConditionalFormatting(
range.addConditionalFormat(ExcelScript.ConditionalFormatType.cellValue).getC
ellValue(),
colorIfLess,
formula,
ExcelScript.ConditionalCellValueOperator.lessThan);
}
function setConditionalFormatting(
conditionalFormat: ExcelScript.CellValueConditionalFormat,
color: "Red" | "Green" | "Yellow" | "None",
formula: string,
operator: ExcelScript.ConditionalCellValueOperator
) {
// Pick the fill and font colors based on the preset color choices.
if (color == "Red") {
conditionalFormat.getFormat().getFont().setColor("#9C0006");
conditionalFormat.getFormat().getFill().setColor("#FFC7CE");
} else if (color == "Green") {
conditionalFormat.getFormat().getFont().setColor("#001600");
conditionalFormat.getFormat().getFill().setColor("#C6EFCE");
} else if (color == "Yellow") {
conditionalFormat.getFormat().getFont().setColor("#9C5700");
conditionalFormat.getFormat().getFill().setColor("#FFEB9C");
} else { /* None */
return;
}
Saiba mais sobre as APIs do GitHub que estão sendo usadas na referência da API do
GitHub . Você também pode ver a saída de chamada de API bruta visitando
https://api.github.com/users/{USERNAME}/repos em um navegador da Web (certifique-
se de substituir o espaço reservado {USERNAME} pela ID do GitHub).
Este exemplo mostra como extrair dados de várias pastas de trabalho em uma única
pasta de trabalho centralizada. Ele usa dois scripts: um para recuperar informações de
uma pasta de trabalho e outro para criar novas planilhas com essas informações. Ele
combina os scripts em um fluxo do Power Automate que atua em uma pasta inteira do
OneDrive.
) Importante
Esse exemplo copia apenas os valores das outras pastas de trabalho. Ele não
preserva a formatação, gráficos, tabelas ou outros objetos.
Solução
1. Crie um novo arquivo do Excel no OneDrive. O nome do arquivo
"Combination.xlsx" é usado neste exemplo.
2. Crie e salve os dois scripts deste exemplo.
3. Crie uma pasta no OneDrive e adicione uma ou mais pastas de trabalho com
dados a ela. O nome da pasta "saída" é usado neste exemplo.
4. Crie um fluxo (conforme descrito na seção Fluxo do Power Automate deste artigo)
para executar estas etapas:
a. Liste todos os arquivos da pasta "saída".
b. Use o script Devolução de dados da planilha para obter os dados de cada
planilha em cada uma das pastas de trabalho.
c. Use o script Adicionar planilhas para criar uma nova planilha na pasta de
trabalho "Combination.xlsx" para cada planilha em todos os outros arquivos.
/**
* This script returns the values from the used ranges on each worksheet.
*/
function main(workbook: ExcelScript.Workbook): WorksheetData[] {
// Create an object to return the data from each worksheet.
let worksheetInformation: WorksheetData[] = [];
return worksheetInformation;
}
// An interface to pass the worksheet name and cell values through a flow.
interface WorksheetData {
name: string;
data: string[][];
}
/**
* This script creates a new worksheet in the current workbook for each
WorksheetData object provided.
*/
function main(workbook: ExcelScript.Workbook, workbookName: string,
worksheetInformation: WorksheetData[]) {
// Add each new worksheet.
worksheetInformation.forEach((value) => {
let sheet = workbook.addWorksheet(`${workbookName}.${value.name}`);
// An interface to pass the worksheet name and cell values through a flow.
interface WorksheetData {
name: string;
data: string[][];
}
Fluxo do Power Automate: combinar planilhas
em uma única pasta de trabalho
1. Entre no Power Automate e crie um novo fluxo de nuvem instantânea.
3. Obtenha todas as pastas de trabalho que você deseja combinar de sua pasta.
Adicione uma ação e escolha os arquivos list do conector OneDrive for Business
na ação de pasta. Para o campo Pasta , use o seletor de arquivos para selecionar a
pasta "saída".
4. Adicione uma ação para executar o script de dados da planilha Retornar para
obter todos os dados de cada uma das pastas de trabalho. Escolha a ação executar
script do conector do Excel Online (Business). Use os valores a seguir para a ação.
Observe que quando você adicionar a Id para o arquivo, o Power Automate
encerrará a ação em um controle For each, para que a ação seja executada em
cada arquivo.
Selecione o botão Alternar para inserir toda a matriz para adicionar o objeto
array diretamente, em vez de itens individuais para a matriz. Faça isso antes
de inserir o resultado.
6. Salve o fluxo. O designer de fluxo deve se parecer com a imagem a seguir.
7. Use o botão Testar na página do editor de fluxo ou execute o fluxo por meio da
guia Meus fluxos . Certifique-se de permitir o acesso quando solicitado.
Solução de problemas
Um recurso com o mesmo nome ou identificador já existe: esse erro
provavelmente indica que a pasta de trabalho "Combination.xlsx" já tem uma
planilha com o mesmo nome. Isso acontecerá se você executar o fluxo várias vezes
com as mesmas pastas de trabalho. Crie uma pasta de trabalho sempre para
armazenar os dados combinados ou usar nomes de arquivo diferentes na pasta
"saída".
O argumento é inválido ou ausente ou tem um formato incorreto: esse erro pode
significar que o nome da planilha gerada não atende aos requisitos do Excel .
Isso é provável porque o nome é muito longo. Se os nomes da planilha tiverem
mais de 30 caracteres, substitua o código em "Adicionar planilhas" que chama
addWorksheet por algo que encurta a cadeia de caracteres. Como o nome da pasta
TypeScript
let worksheetNumber = 1;
// Add each new worksheet.
worksheetInformation.forEach((value) => {
let worksheetName = `${workbookName}.${value.name}`;
let sheet =
workbook.addWorksheet(`${worksheetName.substr(0,30)}${worksheetNumber++
}`);
Em vez de tornar o fluxo e o script mais complicados, talvez seja mais fácil
garantir que os nomes do arquivo e da planilha sejam curtos o suficiente.
Converter arquivos CSV em pastas de
trabalho do Excel
Artigo • 27/01/2024
Muitos serviços exportam dados como arquivos CSV (valor separado por vírgula). Essa
solução automatiza o processo de conversão desses arquivos CSV em pastas de
trabalho do Excel no formato de arquivo .xlsx. Ele usa um fluxo do Power Automate
para encontrar arquivos com a extensão .csv em uma pasta do OneDrive e um Script do
Office para copiar os dados do arquivo .csv em uma nova pasta de trabalho do Excel.
Solução
1. Armazene os arquivos .csv e um arquivo "Modelo" em branco .xlsx em uma pasta
do OneDrive.
2. Crie um Script do Office para analisar os dados CSV em um intervalo.
3. Crie um fluxo do Power Automate para ler os arquivos .csv e passar seu conteúdo
para o script.
Arquivos de exemplo
Baixe convert-csv-example.zip para obter o arquivo Template.xlsx e dois arquivos .csv
de exemplo. Extraia os arquivos em uma pasta no OneDrive. Este exemplo pressupõe
que a pasta seja chamada de "saída".
Adicione o script a seguir à pasta de trabalho de exemplo. Salve-o como Converter CSV
e experimente o exemplo por conta própria!
/**
* Convert incoming CSV data into a range and add it to the workbook.
*/
function main(workbook: ExcelScript.Workbook, csv: string) {
let sheet = workbook.getWorksheet("Sheet1");
3. Obtenha o arquivo do Excel de modelo. Essa é a base para todos os arquivos .csv
convertidos. No construtor de fluxos, selecione o + botão e Adicione uma ação.
Selecione a ação Obter conteúdo de arquivo do conector OneDrive for Business.
Forneça o caminho do arquivo para o arquivo "Template.xlsx".
Arquivo: /output/Template.xlsx
5. Adicione uma ação que obtém todos os arquivos na pasta "saída". Escolha os
arquivos lista do conector OneDrive for Business na ação de pasta. Forneça o
caminho da pasta que contém os arquivos .csv.
Pasta: /output
6. Adicione uma condição para que o fluxo funcione apenas em arquivos .csv.
Adicione a ação de controle condição . Use os valores a seguir para a Condição.
8. Renomeie a nova etapa Obter conteúdo do arquivo para "Obter .csv arquivo". Isso
ajuda a distinguir esse arquivo do modelo do Excel.
9. Faça o novo arquivo .xlsx, usando o modelo do Excel como o conteúdo base.
Adicione uma ação que usa a ação Criar arquivo do conector OneDrive for
Business. Use os seguintes valores.
Caminho da pasta: /output
Nome do arquivo: nome sem extensão.xlsx (escolha o Nome sem conteúdo
dinâmico de extensão nos arquivos List na pasta e digite manualmente
".xlsx" após ele)
Conteúdo do arquivo: conteúdo do arquivo (conteúdo dinâmico do modelo
Get Excel)
10. Execute o script para copiar dados na nova pasta de trabalho. Adicione a ação
executar script do conector do Excel Online (Business). Use os valores a seguir
para a ação.
13. Você deve encontrar novos arquivos .xlsx na pasta "saída", juntamente com os
arquivos .csv originais. As novas pastas de trabalho contêm os mesmos dados que
os arquivos CSV.
Solução de problemas
Teste de script
Para testar o script sem usar o Power Automate, atribua um valor a csv antes de usá-lo.
Adicione o código a seguir como a primeira linha da main função e selecione Executar.
TypeScript
csv = `1, 2, 3
4, 5, 6
7, 8, 9`;
TypeScript
TypeScript
7 Observação
TypeScript
let rowCount = 0;
TypeScript
rowCount++;
if (rowCount % 5000 === 0) {
console.log("Syncing 5000 rows.");
}
2 Aviso
Se o arquivo CSV for muito grande, você poderá ter problemas de tempo limite no
Power Automate. Você precisará dividir os dados CSV em vários arquivos antes de
convertê-los em pastas de trabalho do Excel.
Observe que esse exemplo não cria os arquivos .csv no fluxo, portanto, essa alteração
precisa acontecer na parte personalizada do fluxo. Você também pode ler e reescrever
os arquivos .csv com o BOM, se não controlar como esses arquivos são criados.
Aspas ao redor
Este exemplo remove todas as aspas ("") que cercam valores. Normalmente, eles são
adicionados a valores separados por vírgulas para evitar que vírgulas nos dados sejam
tratadas como tokens de separação. Um arquivo .csv aberto no Excel, salvo como um
arquivo .xlsx, nunca terá as aspas mostradas ao leitor. Se desejar manter as aspas e
exibi-las nas planilhas finais, substitua as linhas 27-30 do script pelo código a seguir.
TypeScript
6 Colaborar conosco no
GitHub Comentários do Office Scripts
A fonte deste conteúdo pode O Office Scripts é um projeto código aberto.
ser encontrada no GitHub, onde Selecione um link para fornecer
você também pode criar e comentários:
revisar problemas e solicitações
de pull. Para obter mais Abrir um problema de documentação
informações, confira o nosso
guia para colaboradores. Fornecer comentários sobre o produto
Arquivos do Excel de referência cruzada
com o Power Automate
Artigo • 06/12/2023
Essa solução mostra como comparar dados entre dois arquivos do Excel para encontrar
discrepâncias. Ele usa scripts do Office para analisar dados e Power Automate para se
comunicar entre as pastas de trabalho.
Esse exemplo passa dados entre pastas de trabalho usando objetos JSON . Para obter
mais informações sobre como trabalhar com JSON, leia Usar JSON para passar dados de
e para scripts do Office.
Cenário de exemplo
Você é um coordenador de eventos que está agendando palestrantes para as próximas
conferências. Você mantém os dados do evento em uma planilha e os registros do alto-
falante em outra. Para garantir que as duas pastas de trabalho sejam mantidas em
sincronização, use um fluxo com scripts do Office para destacar possíveis problemas.
1. event-data.xlsx
2. speaker-registrations.xlsx
// Log the event data to the console and return it for a flow.
let stringResult = JSON.stringify(records);
console.log(stringResult);
return stringResult;
}
// Compare the data in the table to the keys passed into the script.
let keysObject = JSON.parse(keys) as EventData[];
let speakerSlotsRemaining = keysObject.map(value => value.capacity);
let overallMatch = true;
// Iterate over every row looking for differences from the other
worksheet.
let rows = range.getValues();
for (let i = 0; i < rows.length; i++) {
let row = rows[i];
let [eventId, date, location, capacity] = row;
let match = false;
break;
}
}
4. Renomeie esta etapa. Selecione o nome atual "Executar script" no painel de tarefas
e altere-o para "Obter dados de evento".
5. Adicione uma segunda ação que usa a ação executar script do conector do Excel
Online (Business). Essa ação usa os valores retornados do script Obter dados de
evento como entrada para o script de dados de evento Validar . Use os valores a
seguir para a ação.
6. Renomeie esta etapa também. Selecione o nome atual "Executar script 1" no painel
de tarefas e altere-o para "Validar registro de alto-falante".
7. Este exemplo usa o Outlook como o cliente de email. Para este exemplo, adicione
a Office 365 a ação Enviar e enviar e enviar email (V2) do conector do Outlook.
Você pode usar qualquer conector de email compatível com o Power Automate.
Essa ação usa os valores retornados do script de registro do alto-falante Validar
como o conteúdo do corpo do email. Use os valores a seguir para a ação.
Este exemplo usa Scripts do Office e Power Automate para criar um gráfico. Em seguida,
ele envia imagens do gráfico e sua tabela base.
Cenário de exemplo
Calcule para obter os resultados mais recentes.
Criar gráfico.
Obtenha gráfico e imagens de tabela.
Email as imagens com o Power Automate.
Dados de entrada
Gráfico de saída
Email que foi recebido por meio do fluxo do Power
Automate
Solução
Essa solução tem duas partes:
TypeScript
// Get only the "Customer Name" and "Amount due" columns, then remove the
"Total" row.
const selectColumns = rows.map((row) => {
return [row[2], row[5]];
});
table.setShowTotals(true);
selectColumns.splice(selectColumns.length - 1, 1);
console.log(selectColumns);
// Get images of the chart and table, then return them for a Power
Automate flow.
const chartImage = chart.getImage();
const tableImage = table.getRange().getImage();
return { chartImage, tableImage };
}
// The interface for table and chart images.
interface ReportImages {
chartImage: string
tableImage: string
}
3. Este exemplo requer recursos do Power Automate que não têm suporte no novo
designer de fluxo (adicionando HTML a um email). Alterne para o designer antigo
4. Adicione uma nova etapa que usa o conector do Excel Online (Business) com a
ação Executar script . Use os valores a seguir para a ação.
HTML
Power Automate e Office Scripts combinam para lidar com tarefas repetitivas para você.
Neste exemplo, você tem a tarefa de gravar uma única leitura numérica em uma pasta
de trabalho todos os dias e relatar a alteração desde ontem. Você criará um fluxo para
obter essa leitura, fazer logon na pasta de trabalho e relatar a alteração por meio de um
email.
TypeScript
// Add a row with the date, new value, and a formula calculating the
difference.
const currentDate = new Date(Date.now()).toLocaleDateString();
const newRow = [currentDate, newData, "=[@Reading]-
OFFSET([@Reading],-1,0)"];
table.addRow(-1, newRow,);
// Return the difference between the newData and the previous entry.
const difference = Number.parseFloat(newData) - previousValue;
console.log(difference);
return difference;
}
3. Selecione Criar.
4. Em um fluxo real, você adicionará uma etapa que obtém seus dados. Os dados
podem vir de outra pasta de trabalho, um cartão adaptável do Teams ou qualquer
outra fonte. Para testar o exemplo, faça um número de teste. Adicione uma ação e
escolha a ação Inicializar variável . Dê-lhe os valores a seguir.
a. Nome: Entrada
b. Tipo: Inteiro
c. Valor: 190000
5. Adicione uma ação e escolha a ação executar script do conector do Excel Online
(Business). Use os valores a seguir para a ação.
a. Localização: OneDrive for Business
b. Biblioteca de Documentos: OneDrive
c. Arquivo: daily-readings.xlsx (Escolhido por meio do navegador de arquivos)
d. Script: Registrar valor diário
e. newData: Entrada (conteúdo dinâmico)
TypeScript
// Set the fill color to yellow for the cell with the highest value in the
"Amount Due" column.
highestAmountDue.getFormat().getFill().setColor("FFFF00");
5. No branch True , adicione uma nova ação. Selecione a ação executar script do
conector do Excel Online (Business). Use os valores a seguir para a ação.
7 Observação
Você pode alterar o número de linhas totais que estão sendo escritas alterando o
valor de SAMPLE_ROWS . Você pode alterar o número de células a serem gravadas
como uma única ação alterando o valor de CELLS_IN_BATCH .
TypeScript
console.log(`Generating data...`)
let data: (string | number | boolean)[][] = [];
// Generate six columns of random data per row.
for (let i = 0; i < SAMPLE_ROWS; i++) {
data.push([i, ...[getRandomString(5), getRandomString(20),
getRandomString(10), Math.random()], "Sample data"]);
}
function updateRangeInBatches(
startCell: ExcelScript.Range,
values: (string | boolean | number)[][],
cellsInBatch: number
): boolean {
return true;
}
/**
* A helper function that computes the target range and updates.
*/
function updateNextBatch(
startingCell: ExcelScript.Range,
data: (string | boolean | number)[][],
rowsPerBatch: number,
totalRowsUpdated: number
) {
const newStartCell = startingCell.getOffsetRange(totalRowsUpdated, 0);
const targetRange = newStartCell.getResizedRange(rowsPerBatch - 1,
data[0].length - 1);
console.log(`Updating batch at range ${targetRange.getAddress()}`);
const dataToUpdate = data.slice(totalRowsUpdated, totalRowsUpdated +
rowsPerBatch);
try {
targetRange.setValues(dataToUpdate);
} catch (e) {
throw `Error while updating the batch range: ${JSON.stringify(e)}`;
}
return;
}
/**
* A helper function that computes the target range given the target range's
starting cell
* and selected range and updates the values.
*/
function updateTargetRange(
targetCell: ExcelScript.Range,
values: (string | boolean | number)[][]
) {
const targetRange = targetCell.getResizedRange(values.length - 1,
values[0].length - 1);
console.log(`Updating the range: ${targetRange.getAddress()}`);
try {
targetRange.setValues(values);
} catch (e) {
throw `Error while updating the whole range: ${JSON.stringify(e)}`;
}
return;
}
// Credit: https://www.codegrepper.com/code-
examples/javascript/random+text+generator+javascript
function getRandomString(length: number): string {
var randomChars =
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var result = '';
for (var i = 0; i < length; i++) {
result += randomChars.charAt(Math.floor(Math.random() *
randomChars.length));
}
return result;
}
function main(
workbook: ExcelScript.Workbook,
startRow: number,
batchSize: number
): string[][] {
// This sample only reads the first worksheet in the workbook.
const sheet = workbook.getWorksheets()[0];
// Get the next batch or the rest of the rows, whichever is smaller.
const rowCountToRead = Math.min(batchSize, (lastRowindex - startRow + 1));
const rangeToRead = sheet.getRangeByIndexes(startRow, 0, rowCountToRead,
lastColumnIndex + 1);
return rangeToRead.getValues() as string[][];
}
function main(
workbook: ExcelScript.Workbook,
data: string[][],
currentRow: number,
batchSize: number
): boolean {
// Get the first worksheet.
const sheet = workbook.getWorksheets()[0];
// If the script wrote less data than the batch size, signal the end of
the flow.
return batchSize > data.length;
}
Fluxo do Power Automate: ler e gravar dados em um loop
1. Entre no Power Automate e crie um novo fluxo de nuvem instantânea.
3. Crie uma variável para acompanhar a linha atual que está sendo lida e escrita. No
construtor de fluxos, selecione o + botão e Adicione uma ação. Selecione a ação
Inicializar variável e dê-lhe os valores a seguir.
Nome: currentRow
Tipo: Inteiro
Valor: 0
4. Adicione uma ação para definir o número de linhas a serem lidas em um único
lote. Dependendo do número de colunas, isso pode precisar ser menor para evitar
os limites de transferência de dados. Faça uma nova ação de variável Initialize
com os valores a seguir.
Nome: batchSize
Tipo: Inteiro
Valor: 10000
5. Adicione um controle Fazer até o controle. O fluxo lerá partes dos dados até que
todos eles sejam copiados. Você usará o valor de -1 para indicar que o fim dos
dados foi atingido. Dê ao controle os valores a seguir.
7. Chame o script para gravar os dados. Adicione uma segunda ação executar script .
Renomeie-o para Gravar dados. Use os valores a seguir para a ação.
Nome: currentRow
Valor: batchSize (conteúdo dinâmico)
Nome: currentRow
Valor: -1
11. Salve o fluxo. O designer de fluxo deve se parecer com a imagem a seguir.
12. Use o botão Testar na página do editor de fluxo ou execute o fluxo por meio da
guia Meus fluxos . Certifique-se de permitir o acesso quando solicitado.
Nesse cenário, você tem a tarefa de analisar relatórios de download do site da sua
empresa. O objetivo desta análise é determinar se o tráfego da Web vem do Estados
Unidos ou de outros lugares do mundo.
Seus colegas carregam os dados brutos em sua pasta de trabalho. O conjunto de dados
de cada semana tem sua própria planilha. Há também a planilha Resumo com uma
tabela e um gráfico que mostra tendências semana a semana.
Instruções de instalação
1. Baixe a pasta de trabalho de exemplo para o OneDrive.
TypeScript
if (logRange.getColumnCount() !== 8) {
console.log(`Verify that you are on the correct worksheet. Either
the week's data has been already processed or the content is incorrect.
The following columns are expected: ${[
"Time Stamp", "IP Address", "kilobytes", "user agent code",
"milliseconds", "Request", "Results", "Referrer"
]}`);
return;
}
// Get the range that will contain TRUE/FALSE if the IP address is
from the United States (US).
let isUSColumn = logRange
.getLastColumn()
.getOffsetRange(0, 1);
// Autofit columns.
currentWorksheet.getUsedRange().getFormat().autofitColumns();
/**
* A function to add summary data on the worksheet.
*/
function addSummaryData() {
// Add a summary row and table.
let summaryHeader = [["Year", "Week", "US", "Other"]];
let countTrueFormula =
"=COUNTIF(" + isUSColumn.getAddress() + ', "=TRUE")/' +
(newCol.length - 1);
let countFalseFormula =
"=COUNTIF(" + isUSColumn.getAddress() + ', "=FALSE")/' +
(newCol.length - 1);
let summaryContent = [
[
'=TEXT(A2,"YYYY")',
'=TEXTJOIN(" ", FALSE, "Wk", WEEKNUM(A2))',
countTrueFormula,
countFalseFormula
]
];
let summaryHeaderRow = currentWorksheet.getRange("J1:M1");
let summaryContentRow = currentWorksheet.getRange("J2:M2");
console.log("2");
summaryHeaderRow.setValues(summaryHeader);
console.log("3");
summaryContentRow.setValues(summaryContent);
console.log("4");
conditionalFormatTrue.getCellValue().getFormat().getFill().setColor("#8
FA8DB");
conditionalFormatTrue.getCellValue().setRule({
formula1: "=TRUE",
operator: ExcelScript.ConditionalCellValueOperator.equalTo
});
conditionalFormatFalse.getCellValue().getFormat().getFill().setColor("#
F8CCAD");
conditionalFormatFalse.getCellValue().setRule({
formula1: "=FALSE",
operator: ExcelScript.ConditionalCellValueOperator.equalTo
});
}
/**
* Translate an IP address into an integer.
* @param ipAddress: IP address to verify.
*/
function ipAddressToInteger(ipAddress: string): number {
// Split the IP address into octets.
let octets = ipAddress.split(".");
// Create a number for each octet and do the math to create the
integer value of the IP address.
let fullNum =
// Define an arbitrary number for the last octet.
111 +
parseInt(octets[2]) * 256 +
parseInt(octets[1]) * 65536 +
parseInt(octets[0]) * 16777216;
return fullNum;
}
/**
* Return the row number where the ip address is found.
* @param ipLookupTable IP look-up table.
* @param n IP address to number value.
*/
function findIP(ipLookupTable: number[][], n: number): number {
for (let i = 0; i < ipLookupTable.length; i++) {
if (ipLookupTable[i][0] <= n && ipLookupTable[i][1] >= n) {
return i;
}
}
return -1;
}
Executando o script
Navegue até qualquer uma das planilhas week** e execute o script Analisar Downloads
da Web . O script aplicará a formatação condicional e a rotulagem de local na planilha
atual. Ele também atualizará a planilha Resumo .
Você desenvolverá um script que usa o fetch comando para consultar o banco de
dados NOAA Tides and Currents . Isso fará com que o nível da água seja registrado em
um determinado período de tempo. As informações serão retornadas como JSON ,
portanto, parte do script traduzirá isso em valores de intervalo. Depois que os dados
estiverem na planilha, eles serão usados para fazer um gráfico.
Para obter mais informações sobre como trabalhar com JSON, leia Usar JSON para
passar dados de e para scripts do Office.
Instruções de instalação
1. Abra a pasta de trabalho no Excel.
TypeScript
/**
* Gets data from the National Oceanic and Atmospheric Administration's
Tides and Currents database.
* That data is used to make a chart.
*/
async function main(workbook: ExcelScript.Workbook) {
// Get the current sheet.
let currentSheet = workbook.getActiveWorksheet();
// Create selection of parameters for the fetch URL.
// More information on the NOAA APIs is found here:
// https://api.tidesandcurrents.noaa.gov/api/prod/
const option = "water_level";
const startDate = "20201225"; /* yyyymmdd date format */
const endDate = "20201227";
const station = "9447130"; /* Seattle */
console.log(strQuery);
// Note that we're only taking the data part of the JSON and
excluding the metadata.
const noaaData: NOAAData[] = JSON.parse(stringifiedJson).data;
/**
* An interface to wrap the parts of the JSON we need.
* These properties must match the names used in the JSON.
*/
interface NOAAData {
t: string; // Time
v: number; // Level
}
}
Executando o script
Em qualquer planilha, execute o script do Gráfico de Nível de Água da NOAA . O script
busca os dados de nível da água de 25 de dezembro de 2020 a 27 de dezembro de
2020. As const variáveis no início do script podem ser alteradas para usar datas
diferentes ou obter informações diferentes da estação. A API do CO-OPS para
Recuperação de Dados descreve como obter todos esses dados.
Nesse cenário, você é um instrutor que contabiliza as notas de fim de ano de cada
aluno. Você está inserindo as pontuações para suas atribuições e testes à medida que
você vai. Agora, é hora de determinar o destino dos alunos.
Você desenvolverá um script que totaliza as notas para cada categoria de ponto. Em
seguida, ele atribuirá uma nota de letra a cada aluno com base no total. Para ajudar a
garantir a precisão, você adicionará algumas verificações para ver se as pontuações
individuais são muito baixas ou altas. Se a pontuação de um aluno for menor que zero
ou mais do que o valor de ponto possível, o script sinalizará a célula com um
preenchimento vermelho e não totalizará os pontos desse aluno. Essa será uma
indicação clara de quais registros você precisa marcar duas vezes. Você também
adicionará uma formatação básica às notas para que você possa exibir rapidamente a
parte superior e inferior da classe.
Instruções de instalação
1. Baixe a pasta de trabalho de exemplo para o OneDrive.
TypeScript
workbook.getActiveWorksheet().getUsedRange().clearAllConditionalFormats
();
// Use regular expressions to read the max score from the assignment,
mid-term, and final scores columns.
let maxScores: string[] = [];
const assignmentMaxMatches = (studentData[0][1] as
string).match(/\d+/);
const midtermMaxMatches = (studentData[0][2] as string).match(/\d+/);
const finalMaxMatches = (studentData[0][3] as string).match(/\d+/);
// Use the first (and only) match from the regular expressions as the
max scores.
maxScores = [assignmentMaxMatches[0], midtermMaxMatches[0],
finalMaxMatches[0]];
studentsRange.getColumn(5).getFormat().setHorizontalAlignment(ExcelScri
pt.HorizontalAlignment.center);
}
/**
* Helper function to apply conditional formatting.
* @param value Cell value to use in conditional formatting formula1.
* @param range Target range.
* @param fontColor Font color to use.
* @param fillColor Fill color to use.
* @param operator Operator to use in conditional formatting.
*/
function setCellValueConditionalFormatting(
value: string,
range: ExcelScript.Range,
fontColor: string,
fillColor: string,
operator: ExcelScript.ConditionalCellValueOperator) {
// Determine the formula1 based on the type of value parameter.
let formula1: string;
if (isNaN(Number(value))) {
// For cell value equalTo rule, use this format: formula1:
"=\"A\"",
formula1 = `=\"${value}\"`;
} else {
// For number input (greater-than or less-than rules), just append
'='.
formula1 = `=${value}`;
}
conditionalFormatting.getCellValue().getFormat().getFont().setColor(fon
tColor);
conditionalFormatting.getCellValue().getFormat().getFill().setColor(fil
lColor);
conditionalFormatting.getCellValue().setRule({ formula1, operator });
}
A solução tem três etapas que são combinadas em um único fluxo do Power Automate.
1. Um script extrai dados de uma tabela e retorna uma matriz de objetos como
dados JSON .
2. Em seguida, os dados são enviados para a ação de reunião Do Teams Create a
Teams para enviar convites.
3. Os mesmos dados JSON são enviados para outro script para atualizar o status do
convite.
Para obter mais informações sobre como trabalhar com JSON, leia Usar JSON para
passar dados de e para scripts do Office.
Instruções de instalação
Criar os scripts
1. Na guia Automatizar, selecioneNovo Script e cole o script a seguir no editor. Isso
extrairá dados de tabela para agendar convites.
TypeScript
// Convert the table rows into InterviewInvite objects for the flow.
let invites: InterviewInvite[] = [];
dataRows.forEach((row) => {
const inviteSent = row[1] as boolean;
if (!inviteSent) {
const startTime = new Date(Math.round(((row[6] as number) - 25569) *
86400 * 1000));
const finishTime = new Date(startTime.getTime() + MEETING_DURATION *
60 * 1000);
const candidateName = row[2] as string;
const interviewerName = row[4] as string;
invites.push({
ID: row[0] as string,
Candidate: candidateName,
CandidateEmail: row[3] as string,
Interviewer: row[4] as string,
InterviewerEmail: row[5] as string,
StartTime: startTime.toISOString(),
FinishTime: finishTime.toISOString(),
Message: generateInviteMessage(MESSAGE_TEMPLATE, candidateName,
interviewerName)
});
}
});
console.log(JSON.stringify(invites));
return invites;
}
function generateInviteMessage(
messageTemplate: string,
candidate: string,
interviewer: string) : string {
return messageTemplate.replace("_Candidate_",
candidate).replace("_Interviewer_", interviewer);
}
2. Crie outro novo script com o código a seguir. Isso marcará as linhas como
convidadas.
TypeScript
if (inviteSent) {
inviteSentColumn.getRangeBetweenHeaderAndTotal().getCell(row,
0).setValue(true);
console.log(`Invite for ${inviteSent.Candidate} has been sent.`);
}
}
}
4. Adicione uma ação que usa a ação criar uma reunião do Microsoft Teams
connector. À medida que você seleciona conteúdo dinâmico no conector do Excel,
um Para cada bloco será gerado para o fluxo. Conclua o conector com os valores a
seguir.
5. No mesmo Para cada bloco, adicione outra ação Executar script . Use os seguintes
valores.
Nesse cenário, você está gerenciando um projeto. Você usa uma planilha do Excel para
acompanhar o status de seus funcionários todos os meses. Muitas vezes você precisa
lembrar as pessoas para preencher suas status, então você decidiu automatizar esse
processo de lembrete.
Você criará um fluxo do Power Automate para enviar mensagens a pessoas com campos
de status ausentes e aplicar suas respostas à planilha. Para fazer isso, você desenvolverá
um par de scripts para lidar com o trabalho com a pasta de trabalho. O primeiro script
obtém uma lista de pessoas com status em branco e o segundo script adiciona uma
cadeia de caracteres status à linha direita. Você também usará cartões adaptáveis do
Teams para que os funcionários insiram seus status diretamente da notificação.
Pré-requisitos
Esse cenário usa o Power Automate e o Microsoft Teams . Você precisará de ambos
associados à conta que você usa para desenvolver scripts do Office. Para acesso gratuito
a uma assinatura do Microsoft Developer para saber mais sobre e trabalhar com esses
aplicativos, considere ingressar no Programa de Desenvolvedor do Microsoft 365.
Instruções de instalação
Criar os scripts
1. Primeiro, precisamos de um script para obter todos os funcionários com status
relatórios ausentes da planilha. Na guia Automatizar, selecioneNovo Script e cole
o script a seguir no editor.
TypeScript
/**
* This script looks for missing status reports in a project management
table.
*
* @returns An array of Employee objects (containing their names and
emails).
*/
function main(workbook: ExcelScript.Workbook): Employee[] {
// Get the first worksheet and the first table on that worksheet.
let sheet = workbook.getFirstWorksheet()
let table = sheet.getTables()[0];
// Loop through the table and check each row for completion.
for (let i = 0; i < bodyRangeValues.length; i++) {
let row = bodyRangeValues[i];
if (row[STATUS_REPORT_INDEX] === "") {
// Save the email to return.
people.push({ name: row[NAME_INDEX].toString(), email:
row[EMAIL_INDEX].toString() });
}
}
/**
* An interface representing an employee.
* An array of Employees will be returned from the script
* for the Power Automate flow.
*/
interface Employee {
name: string;
email: string;
}
TypeScript
/**
* This script applies the results of a Teams Adaptive Card about
* a status update to a project management table.
*
* @param senderEmail - The email address of the employee updating
their status.
* @param statusReportResponse - The employee's status report.
*/
function main(workbook: ExcelScript.Workbook,
senderEmail: string,
statusReportResponse: string) {
// Get the first worksheet and the first table in that worksheet.
let sheet = workbook.getFirstWorksheet();
let table = sheet.getTables()[0];
// Loop through the table and check each row for a matching email
address.
for (let i = 0; i < tableRowCount && !statusAdded; i++) {
let row = bodyRangeValues[i];
Dica
Se você ainda não criou um fluxo antes, marcar nosso tutorial Comece a usar
scripts com o Power Automate para aprender o básico.
4. O fluxo precisa chamar o script Obter Pessoas para obter todos os funcionários
com campos de status vazios. No construtor de fluxos, selecione o + botão e
Adicione uma ação. Selecione a ação executar script do conector do Excel Online
(Business). Forneça as seguintes entradas para a etapa de fluxo:
JSON
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.0",
"body": [
{
"type": "TextBlock",
"size": "Medium",
"weight": "Bolder",
"text": "Update your Status Report"
},
{
"type": "Image",
"altText": "",
"url": "https://i.imgur.com/f5RcuF3.png"
},
{
"type": "TextBlock",
"text": "This is a reminder to update your status report for this
month's review. You can do so right here in this card, or by adding it
directly to the spreadsheet.",
"wrap": true
},
{
"type": "Input.Text",
"placeholder": "My status report for this month is...",
"id": "response",
"isMultiline": true
}
],
"actions": [
{
"type": "Action.Submit",
"title": "Submit",
"id": "submit"
}
]
}
10. Salve o fluxo. O designer de fluxo deve se parecer com a imagem a seguir.
Executando o fluxo
Para testar o fluxo, verifique se todas as linhas de tabela com status em branco usam um
endereço de email vinculado a uma conta do Teams (você provavelmente deve usar seu
próprio endereço de email durante o teste). Use o botão Testar na página do editor de
fluxo ou execute o fluxo por meio da guia Meus fluxos . Certifique-se de permitir o
acesso quando solicitado.
Você deve receber um Cartão Adaptável do Power Automate por meio do Teams.
Depois de preencher o campo status no cartão, o fluxo continuará e atualizará a planilha
com o status fornecido.
Antes de executar o fluxo
A ideia de cenário e o script usados neste exemplo foram contribuídos pelo membro da
comunidade do Office Scripts , Brian Gonzalez .
Nesse cenário, você criará uma folha de tempo para um funcionário que permite que
eles registrem seus horários de início e término com um botão. Com base no que foi
gravado anteriormente, selecionar o botão iniciará seu dia (relógio) ou terminará seu dia
(relógio).
Instruções de instalação
1. Baixe a pasta de trabalho de exemplo para o OneDrive.
TypeScript
/**
* This script records either the start or end time of a shift,
* depending on what is filled out in the table.
* It is intended to be used with a Script Button.
*/
function main(workbook: ExcelScript.Workbook) {
// Get the first table in the timesheet.
const timeSheet = workbook.getWorksheet("MyTimeSheet");
const timeTable = timeSheet.getTables()[0];
// Get the last rows for the Clock In and Clock Out columns.
let clockInLastRow =
clockInColumn.getRangeBetweenHeaderAndTotal().getLastRow();
let clockOutLastRow =
clockOutColumn.getRangeBetweenHeaderAndTotal().getLastRow();
// Add the current time to a column based on the state of the table.
if (clockInLastRow.getValue() as string === "") {
// If the Clock In column has an empty value in the table, add a
start time.
clockInLastRow.setValue(date.toLocaleString());
} else if (clockOutLastRow.getValue() as string === "") {
// If the Clock Out column has an empty value in the table,
// add an end time and calculate the shift duration.
clockOutLastRow.setValue(date.toLocaleString());
const clockInTime = new Date(clockInLastRow.getValue() as string);
const clockOutTime = new Date(clockOutLastRow.getValue() as
string);
const clockDuration = Math.abs((clockOutTime.getTime() -
clockInTime.getTime()));
durationColumn.getRangeBetweenHeaderAndTotal().getLastRow().setValue(du
rationString);
} else {
// If both columns are full, add a new row, then add a start time.
timeTable.addRow()
clockInLastRow.getOffsetRange(1,
0).setValue(date.toLocaleString());
}
}
/**
* A function to write a time duration as a string.
*/
function getDurationMessage(delta: number) {
// Adapted from here:
// https://stackoverflow.com/questions/13903897/javascript-return-
number-of-days-hours-minutes-seconds-between-two-dates
if (days >= 1) {
durationString += days;
durationString += (days > 1 ? " days" : " day");
if (hours >= 1) {
durationString += hours;
durationString += (hours > 1 ? " hours" : " hour");
if (minutes >= 1) {
durationString += " and ";
}
}
if (minutes >= 1) {
durationString += minutes;
durationString += (minutes > 1 ? " minutes" : " minute");
}
return durationString;
}
5. Salve o script.
7. Adicione um botão script. Acesse o menu Mais opções (...) na página Detalhes do
script e selecione Adicionar botão.
8. Salve a pasta de trabalho.
Executar o script
Selecione o botão Socar o relógio para executar o script. Ele registra o tempo atual em
"Clock In" ou "Clock Out", dependendo do que foi inserido anteriormente.
7 Observação
A duração só será registrada se for maior que um minuto. Edite manualmente o
tempo "Clock In" para testar durações maiores.
Saudações de estação
Artigo • 25/10/2023
Este roteiro foi contribuído por Leslie Black no espírito da temporada de férias! É um
script divertido que mostra uma árvore cantando no Excel usando scripts do Office.
Desfrutar!
TypeScript
setOuterEdgeYellow(workbook) //yellow
setOuterEdgeRed(workbook) //red
setOuterEdgeYellow(workbook) //yellow
setOuterEdgeRed(workbook) //red
setOuterEdgeYellow(workbook) //yellow
setOuterEdgeRed(workbook) //red
setOuterEdgeYellow(workbook) //yellow
setOuterEdgeRed(workbook) //red
setOuterEdgeYellow(workbook) //yellow
setOuterEdgeRed(workbook) //red
setOuterEdgeYellow(workbook) //yellow
setOuterEdgeRed(workbook) //red
setOuterEdgeYellow(workbook) //yellow
setOuterEdgeRed(workbook) //red
setOuterEdgeYellow(workbook) //yellow
setOuterEdgeRed(workbook) //red
setOuterEdgeYellow(workbook) //yellow
setFlashingStarAndSmileRed(workbook) //red
setFlashingStarAndSmileYellow(workbook) //yellow
setOuterEdgeYellow(workbook) //yellow
setOuterEdgeRed(workbook) //red
setOuterEdgeYellow(workbook) //yellow
setOuterEdgeRed(workbook) //red
setOuterEdgeYellow(workbook) //yellow
setOuterEdgeRed(workbook) //red
setOuterEdgeYellow(workbook) //yellow
setOuterEdgeRed(workbook) //red
setOuterEdgeYellow(workbook) //yellow
setOuterEdgeRed(workbook) //red
setOuterEdgeYellow(workbook) //yellow
setOuterEdgeRed(workbook) //red
setOuterEdgeYellow(workbook) //yellow
setOuterEdgeRed(workbook) //red
setOuterEdgeYellow(workbook) //yellow
setOuterEdgeRed(workbook) //red
setOuterEdgeYellow(workbook) //yellow
setFlashingStarAndSmileRed(workbook) //red
setFlashingStarAndSmileYellow(workbook) //yellow
blink(workbook)
setOuterEdgeRed(workbook) //red
setOuterEdgeYellow(workbook) //yellow
setOuterEdgeRed(workbook) //red
setOuterEdgeYellow(workbook) //yellow
setOuterEdgeRed(workbook) //red
setOuterEdgeYellow(workbook) //yellow
unblink(workbook)
console.log('Routine finished');
Scripts do Office e macros VBA têm muito em comum. Ambos permitem que os
usuários automatizem soluções por meio de um gravador de ação fácil de usar e
permitam edições dessas gravações. Ambas as estruturas são projetadas para capacitar
pessoas que podem não se considerar programadoras para criar pequenos programas
no Excel.
A diferença fundamental é que as macros VBA são desenvolvidas para soluções de área
de trabalho e os Scripts do Office são projetados para soluções seguras, entre
plataformas e baseadas em nuvem.
Este artigo descreve as main diferenças entre macros VBA (bem como VBA em geral) e
Scripts do Office. Como os Scripts do Office só estão disponíveis para o Excel, esse é o
único host que está sendo discutido aqui.
Plataforma e ecossistema
A tabela a seguir mostra quais recursos têm suporte para quais plataformas e produtos.
Excel Excel para Excel Excel Outros Power
Online Windows para para produtos do Automate
Mac iOS Office
O VBA foi projetado para ser centrado na área de trabalho. O VBA pode interagir com a
área de trabalho de um usuário para se conectar com tecnologias semelhantes, como
COM e OLE. No entanto, o VBA não tem uma maneira conveniente de chamar para a
Internet. Os Scripts do Office usam um runtime universal para JavaScript. Isso fornece
comportamento e acessibilidade consistentes, independentemente do computador ser
usado para executar o script. Eles também podem fazer chamadas para um conjunto
limitado de serviços Web.
Os usuários exigem uma licença corporativa ou educacional para usar ou criar scripts do
Office. Para obter a lista completa de licenças com suporte, consulte Suporte à
plataforma. O VBA é integrado às versões da área de trabalho do Excel e não requer
licenciamento especial.
Segurança
As macros VBA têm a mesma autorização de segurança que o Excel. Isso lhes dá acesso
total à sua área de trabalho. Os Scripts do Office só têm acesso à pasta de trabalho, não
ao computador que hospeda a pasta de trabalho. Além disso, nenhum token de
autenticação JavaScript pode ser compartilhado com scripts. Isso significa que o script
não tem os tokens do usuário conectado nem há recursos de API para entrar em um
serviço externo, portanto, eles não podem usar tokens existentes para fazer chamadas
externas em nome do usuário.
Os administradores têm três opções para macros VBA: permitir todas as macros no
locatário, não permitir macros no locatário ou permitir apenas macros com certificados
assinados. Essa falta de granularidade torna difícil isolar um único ator ruim.
Atualmente, os Scripts do Office podem estar desativados para um locatário inteiro,
ativado para um locatário inteiro ou ativado para um grupo de usuários em um
locatário. Os administradores também têm controle sobre quem pode compartilhar
scripts com outras pessoas e quem pode usar scripts no Power Automate.
Cobertura
Atualmente, o VBA oferece uma cobertura mais completa dos recursos do Excel,
especialmente aqueles disponíveis no cliente da área de trabalho. Os Scripts do Office
abrangem quase todos os cenários para Excel na Web. Além disso, à medida que novos
recursos estreiam na Web, os Scripts do Office darão suporte a eles para as APIs Do
Gravador de Ações e JavaScript.
Os Scripts do Office não dão suporte a eventos no nível do Excel. Os scripts só são
executados quando um usuário os inicia manualmente ou quando um fluxo do Power
Automate chama o script.
Power Automate
O VBA não tem um conector do Power Automate. Todos os cenários de VBA com
suporte envolvem um usuário que atende à execução da macro.
Os Scripts do Office podem ser executados por meio do Power Automate. Sua pasta de
trabalho pode ser atualizada por meio de fluxos agendados ou controlados por eventos,
permitindo automatizar fluxos de trabalho sem sequer abrir o Excel. Experimente os
scripts de chamada de um tutorial manual de fluxo do Power Automate para começar a
aprender sobre o Power Automate. Você também pode marcar o exemplo de lembretes
de tarefas automatizados para ver scripts do Office conectados ao Teams por meio do
Power Automate em um cenário real.
Confira também
Scripts do Office no Excel
Executar scripts do Office com o Power Automate
Diferenças entre os scripts do Office e os suplementos do Office
Solução de problemas dos scripts do Office
Referência do VBA do Excel
Diferenças entre os scripts do Office e
os suplementos do Office
Artigo • 31/03/2023
Os Scripts do Office são executados até a conclusão com uma seleção de botão manual
ou como uma etapa no Power Automate , enquanto os Suplementos do Office
continuam em execução dependendo de como eles estão configurados. Por exemplo,
você pode configurar um Suplemento do Office para continuar em execução mesmo
quando o painel de tarefas for fechado. Isso significa que os Suplementos do Office
mantêm o estado durante uma sessão, enquanto os Scripts do Office não mantêm um
estado interno entre execuções. Se a solução que você está criando exigir um estado
mantido, você deverá visitar a documentação de Suplementos do Office para saber mais
sobre suplementos do Office.
APIs
Embora as APIs JavaScript do Office para Suplementos do Office e as APIs de Scripts do
Office compartilhem algumas funcionalidades, elas são plataformas diferentes. As APIs
de Scripts do Office são um subconjunto otimizado e síncrono do modelo de API
JavaScript do Excel. A principal diferença é o uso do load / sync paradigma com
suplementos. Além disso, os suplementos oferecem APIs para eventos e um conjunto
mais amplo de funcionalidade fora do Excel, conhecido como APIs comuns.
Eventos
Os Scripts do Office não dão suporte a eventos no nível da pasta de trabalho. Os scripts
são disparados por usuários que selecionam o botão Executar para um script ou por
meio do Power Automate. Cada script executa o código em uma única main função e
termina.
Confira também
Scripts do Office no Excel
Diferenças entre scripts do Office e macros VBA
Solução de problemas dos scripts do Office
Criar um suplemento do painel de tarefas do Excel
Quando usar Power Query ou Scripts do
Office
Artigo • 31/03/2023
Power Query e Scripts do Office são soluções de automação poderosas para o Excel.
Ambas as soluções permitem que os usuários do Excel limpo e transformem dados em
pastas de trabalho. Um único Power Query ou Script do Office pode ser atualizado e
executado novamente em novos dados para produzir resultados consistentes, o que
economiza tempo e permite que você trabalhe com as informações resultantes mais
rapidamente.
Este artigo fornece uma visão geral de quando você pode favorecer uma plataforma em
relação à outra. Em geral, Power Query é bom para extrair e transformar dados de
grandes fontes de dados externas e scripts do Office são bons para soluções rápidas
centradas no Excel e integrações do Power Automate.
Power Query tem conexões de dados internas com centenas de fontes. Power Query é
especialmente projetado para tarefas de recuperação, transformação e combinação de
dados. Quando você precisa de dados de uma dessas fontes, Power Query oferece uma
maneira sem código de trazer esses dados para o Excel na forma necessária.
Essas conexões Power Query são projetadas para conjuntos de dados grandes. Eles não
têm os mesmos limites de transferência que o Power Automate ou Excel na Web.
Os Scripts do Office oferecem uma solução leve para fontes de dados menores ou
fontes de dados não cobertas por conectores Power Query. Isso inclui o uso fetch ou
APIs REST ou a obtenção de informações de fontes de dados ad hoc, como uma cartão
adaptável do Teams.
Quase tudo o que você pode fazer manualmente por meio da interface do usuário do
Excel é possível com scripts do Office. Eles são ótimos para aplicar formatação
consistente a pastas de trabalho. Scripts criam gráficos, tabelas dinâmicas, formas,
imagens e outras visualizações de planilha. Os scripts também fornecem controle
preciso sobre as posições, tamanhos, cores e outros atributos dessas visualizações.
A formatação pode ser aplicada com Power Query por meio de modelos do Excel. No
entanto, os modelos são atualizados no nível individual ou da organização, enquanto os
Scripts do Office oferecem controle de acesso mais granular.
Confira também
Portal Power Query
Power Query com o Excel
Executar scripts do Office com o Power Automate