Tutorial: Salvar conteúdo automaticamente de emails em uma pasta de trabalho

Este tutorial ensina a usar um Script do Office para Excel com um fluxo de trabalho automatizado do Power Automa . Seu script é executado automaticamente sempre que você recebe um email, registrando 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ê não estiver familiarizado com os Scripts do Office, comece com o Tutorial: Criar e formatar uma tabela do Excel. Se você for novo no Power Automate, comece 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ê é novato em JavaScript, comece com o tutorial do Mozilla JavaScript.

Pré-requisitos

Você precisará de acesso aos Scripts do Office e ao Power Automate para este tutorial. Examine o suporte à plataforma se a guia Automatizar não aparecer. As perguntas frequentes sobre inscrição no Power Automate têm informações sobre como começar a usar o Power Automate.

Preparar a pasta de trabalho

O Power Automate não pode usarreferências relativascomoWorkbook.getActiveWorksheetacessar componentes da pasta de trabalho. Portanto, você precisa de uma pasta de trabalho e uma planilha com nomes consistentes para o Power Automate referenciar.

  1. Criar um nome para a pasta de trabalhoMyWorkbook.

  2. Vá para a guia Automatizar e selecione Nova criação de script>no Editor de códigos.

  3. Substitua o código existente pelo seguinte script e selecione Executar. Esta etapa configura a pasta de trabalho com nomes consistentes de planilha, 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 registre informações de um email. Você deseja acompanhar em quais dias da semana você recebe mais emails e quantos remetentes únicos enviam esses emails. Sua pasta de trabalho tem uma tabela com as colunas Data, Dia da semana, Endereço de Email e Assunto. Sua planilha também tem uma Tabela Dinâmica que gira no Dia da semana e no Endereço de Email (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 atualiza essa Tabela Dinâmica depois que ela atualiza a tabela de email.

  1. No painel de tarefas do Editor de código, selecione Criar Novo Script>no Editor de Códigos.

  2. O fluxo criado posteriormente no tutorial envia as informações do script sobre cada email recebido. O script precisa aceitar essa entrada pelos parâmetros na mainfunção. Substitua o script padrão pelo script abaixo.

    function main(
      workbook: ExcelScript.Workbook,
      from: string,
      dateReceived: string,
      subject: string) {
    
    }
    
  3. O script precisa acessar a tabela e a tabela dinâmica da pasta de trabalho. Adicione o seguinte código 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");
    
  4. O dateReceivedparâmetro é do tipostring. Converta isso em um Date objeto para que você possa obter facilmente o dia da semana. Depois de fazer isso, você precisa 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' });
    
  5. A subject cadeia de caracteres pode incluir a marca de resposta "RE:". Remova essa marca 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: ", "");
    
  6. Agora que os dados do email estão 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]);
    
  7. 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();
    
  8. Renomeie seu script Gravar Email e selecione Salvar script.

O seu script já está pronto para um fluxo de trabalho automatizado. Deve ser semelhante ao 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

  1. Entre no site do Power Automate.

  2. No menu do lado esquerdo da tela, selecione Criar. Essa seleção leva você a uma lista de maneiras de criar novos fluxos de trabalho.

    Botão Criar do Power Automate.

  3. Na seção Começar no espaço em branco, selecione Fluxo automático. Essa seleção cria um fluxo de trabalho disparado por um evento, como o recebimento de um email.

    A opção de Fluxo automatizado no Power Automate

  4. Na caixa de diálogo exibida, insira o nome para seu fluxo na caixa de textoNome de Fluxo. Em Escolha o gatilho do fluxo, selecione Quando um novo email chegar na lista de opções. Talvez seja necessário pesquisar a opção usando a caixa de pesquisa. Por fim, selecione Criar.

    Parte do fluxo do Power Automate mostrando o

    Observação

    Este tutorial usa o Outlook. Você pode usar seu serviço de email preferido, mas algumas opções podem ser diferentes.

  5. No construtor de fluxo, selecione o + botão e Adicionar uma ação.

  6. No painel de tarefas Adicionar uma ação , pesquise "script de execução do Excel". Escolha a ação Executar script do conector do Excel Online (Business). Esta ação executa um script do seu OneDrive em uma pasta de trabalho. Se você quiser usar um script armazenado na biblioteca do SharePoint da sua equipe, use a ação Executar script de uma biblioteca do SharePoint .

    O painel de tarefas de seleção de ação mostrando ações para o conector do Excel Online (Business). A ação Executar script é realçada.

  7. Você pode ser solicitado a entrar em sua conta do Microsoft 365. Entre para continuar o tutorial.

  8. Em seguida, selecione a pasta de trabalho e o script a serem usados na etapa de fluxo. Para o tutorial, use a pasta de trabalho criada no OneDrive, mas você pode usar qualquer pasta de trabalho em um site do OneDrive ou do SharePoint. 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: De (conteúdo dinâmico do Outlook)
    • ScriptParameters/dateReceived: Hora de recebimento (conteúdo dinâmico do Outlook)
    • ScriptParameters/subject: Subject (conteúdo dinâmico do Outlook)

    Observe que os parâmetros do script aparecem somente depois que você seleciona o script.

    A ação de script de execução do Power Automate mostrando as opções que aparecem depois que o script é selecionado.

  9. Selecione Salvar.

    O botão Salvar no Power Automate.

Agora, o fluxo está habilitado. Ele executa automaticamente o script sempre que você recebe um email pelo Outlook.

Gerenciar o script no Power Automate

  1. Na página principal do Power Automate, selecione Meus fluxos.

    Botão Meus fluxos no Power Automate

  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 é disparado logo após o recebimento de um email. Testar o fluxo enviando a si mesmo um email.

Quando o fluxo disparar e executar o script com êxito, você verá a atualização da tabela da pasta de trabalho e da Tabela Dinâmica.

Uma planilha mostrando a tabela de email depois que o fluxo foi executado três vezes.

Uma planilha mostrando o PivotTable depois que o fluxo foi executado três vezes.

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 esta etapa:

  1. Selecione a ação "o email chega" e, em seguida, selecione Configurações.

  2. Nas opções Configurações que aparecem, consulte o Controle de Simultaneidade como Ativado. Em seguida, consulte o Grau de Paralelismo como 1.

    As opções de simultaneidade no menu de configurações.

Próximas etapas

Tutorial completo: Envie lembretes semanais por email com base nos dados da 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.