Tutorial: salvar automaticamente o conteúdo de emails em uma pasta de trabalho
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.
Preparar a pasta de trabalho
O Power Automate não pode usarreferências relativascomoWorkbook.getActiveWorksheet
acessar componentes da pasta de trabalho. Portanto, você precisa de uma pasta de trabalho e uma planilha com nomes consistentes para o Power Automate fazer referência.
Criar um nome para a pasta de trabalhoMyWorkbook.
Acesse a guia Automatizar e selecioneNovo Script.
Substitua o código existente pelo seguinte script e selecione Executar. Isso instalará a pasta de trabalho com nomes consistentes de planilhas, tabela e tabela dinâmica.
function main(workbook: ExcelScript.Workbook) { // Add a new worksheet to store the email table. let emailsSheet = workbook.addWorksheet("Emails"); // Add data and create a table emailsSheet.getRange("A1:D1").setValues([ ["Date", "Day of the week", "Email address", "Subject"] ]); let newTable = workbook.addTable(emailsSheet.getRange("A1:D2"), true); newTable.setName("EmailTable"); // Add a new PivotTable to a new worksheet let pivotWorksheet = workbook.addWorksheet("Subjects"); let newPivotTable = workbook.addPivotTable("Pivot", "EmailTable", pivotWorksheet.getRange("A3:C20")); // Setup the pivot hierarchies newPivotTable.addRowHierarchy(newPivotTable.getHierarchy("Day of the week")); newPivotTable.addRowHierarchy(newPivotTable.getHierarchy("Email address")); newPivotTable.addDataHierarchy(newPivotTable.getHierarchy("Subject")); }
Criar um Script do Office
Crie um script que registra informações de um email. Você vai querer acompanhar quais dias da semana você recebe mais emails e quantos remetentes exclusivos estão enviando esse email. Sua pasta de trabalho tem uma tabela com colunas Data, Dia da semana, Email endereço e Assunto. Sua planilha também tem uma Tabela Dinâmica que está sendo dinâmica no dia da semana e Email endereço (essas são as hierarquias de linha). A contagem de assuntos exclusivos são as informações agregadas que estão sendo exibidas (a hierarquia de dados). O script atualizará essa Tabela Dinâmica depois de atualizar a tabela de email.
No painel de tarefas do Editor de código, selecione Novo script.
O fluxo que você criará mais tarde no tutorial envia as informações de script sobre cada email recebido. O script precisa aceitar essa entrada pelos parâmetros na
main
função. Substitua o script padrão pelo script abaixo.function main( workbook: ExcelScript.Workbook, from: string, dateReceived: string, subject: string) { }
O script precisa acessar a tabela e a tabela dinâmica da pasta de trabalho. Adicione o código a seguir ao corpo do script, após a abertura
{
.// Get the email table. let emailWorksheet = workbook.getWorksheet("Emails"); let table = emailWorksheet.getTable("EmailTable"); // Get the PivotTable. let pivotTableWorksheet = workbook.getWorksheet("Subjects"); let pivotTable = pivotTableWorksheet.getPivotTable("Pivot");
O
dateReceived
parâmetro é do tipostring
. Converta isso em umDate
objeto para que você possa facilmente obter o dia da semana. Depois de fazer isso, você precisará mapear o valor do número do dia para uma versão mais legível. Adicione o código a seguir ao final do script antes do fechamento}
.// 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' });
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}
.// Remove the reply tag from the email subject to group emails on the same thread. let subjectText = subject.replace("Re: ", ""); subjectText = subjectText.replace("RE: ", "");
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
}
.// Add the parsed text to the table. table.addRow(-1, [dateReceived, dayName, from, subjectText]);
Por fim, verifique se a Tabela Dinâmica está atualizada. Adicione o seguinte código no final do script (antes do encerramento
}
):// Refresh the PivotTable to include the new row. pivotTable.refresh();
Renomeie seu script Gravar Email e selecione Salvar script.
O seu script já está pronto para um fluxo de trabalho automatizado. Ele deve se parecer com o script a seguir.
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");
// Get the PivotTable.
let pivotTableWorksheet = workbook.getWorksheet("Subjects");
let pivotTable = pivotTableWorksheet.getPivotTable("Pivot");
// 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: ", "");
// Add the parsed text to the table.
table.addRow(-1, [dateReceived, dayName, from, subjectText]);
// Refresh the PivotTable to include the new row.
pivotTable.refresh();
}
Criar um fluxo de trabalho automatizado com o Power Automate
Entre no site do Power Automate.
No menu exibido no lado esquerdo da tela, selecione Criar. Isso o conduzirá a uma lista de maneiras de criar novos fluxos de trabalho.
Na seção Começar no espaço em branco, selecione Fluxo automático. Isso cria um fluxo de trabalho iniciado por um evento, como o recebimento de emails.
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.
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.
No construtor de fluxos, selecione o + botão e Adicione uma ação.
No painel Adicionar uma tarefa de ação , pesquise "Script de execução do Excel". Escolha a ação executar script do conector do Excel Online (Business). Essa ação executa um script do OneDrive em uma pasta de trabalho. Se você quiser usar um script armazenado na biblioteca do SharePoint da sua equipe, use o script Executar de uma ação de biblioteca do SharePoint .
Você pode ser solicitado a entrar em sua conta do Microsoft 365. Faça isso para continuar o tutorial.
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 :
- Localização: OneDrive for Business
- Biblioteca de Documentos: OneDrive
- Arquivo: MyWorkbook.xlsx (Escolhido por meio do navegador de arquivos)
- Script: Gravar Email
- ScriptParameters/from: From (conteúdo dinâmico do Outlook)
- ScriptParameters/dateReceived: Hora recebida (conteúdo dinâmico do Outlook)
- ScriptParameters/subject: Assunto (conteúdo dinâmico do Outlook)
Observe que os parâmetros para o script só aparecerão quando o script for selecionado.
Selecione Salvar.
Agora, o fluxo está habilitado. O seu script será automaticamente executado sempre que você receber um email por meio do Outlook.
Gerenciar o script no Power Automate
Na página principal do Power Automate, selecione Meus fluxos.
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:
Selecione a ação "email chega" e selecione Configurações.
Nas opções Configurações que aparecem, consulte o Controle de Simultaneidade como Ativado. Em seguida, consulte o Grau de Paralelismo como 1.
Próximas etapas
Tutorial Completo: enviar lembretes de email semanais com base em dados de planilha. Ele ensina como retornar dados de um script para o fluxo.
Você também pode conferir o exemplo de lembretes automáticos de tarefas para aprender a combinar os Scripts do Office e Power Automate com as placas adaptáveis de equipes.