Cenário de exemplo de Scripts do Office: Lembretes de tarefas automatizados

Neste 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 de preencher seu status, então você decidiu automatizar esse processo de lembrete.

Você criará um fluxo do Power Automate para enviar mensagens às 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 de status à linha da direita. Você também usará os Cartões Adaptáveis do Teams para que os funcionários insiram o status diretamente da notificação.

Habilidades de script abordadas

  • Criar fluxos no Power Automate
  • Passar dados para scripts
  • Retornar dados de scripts
  • Cartões Adaptáveis do Teams
  • Tabelas

Pré-requisitos

Este cenário usa o Power Automate e o Microsoft Teams.

Instruções de configuração

Baixar a pasta de trabalho

  1. Baixe a pasta de trabalho de exemplo para o OneDrive.

  2. Abra a pasta de trabalho no Excel.

Crie os scripts

  1. Primeiro, precisamos de um script para obter todos os funcionários com relatórios de status que estão faltando na planilha. Na guia Automatizar , selecione Criar Novo Script>no Editor de Códigos. Cole o script a seguir no editor.

    /**
     * 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];
    
      // Give the column indices names matching their expected content.
      const NAME_INDEX = 0;
      const EMAIL_INDEX = 1;
      const STATUS_REPORT_INDEX = 2;
    
      // Get the data for the whole table.
      let bodyRangeValues = table.getRangeBetweenHeaderAndTotal().getValues();
    
      // Create the array of Employee objects to return.
      let people: Employee[] = [];
    
      // 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() });
        }
      }
    
      // Log the array to verify we're getting the right rows.
      console.log(people);
    
      // Return the array of Employees.
      return people;
    }
    
    /**
     * 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;
    }
    
  2. Salve o script com o nome Get People.

  3. Em seguida, precisamos de um segundo script para processar os boletins de status e colocar as novas informações na planilha. No painel de tarefas Editor de código, selecione Nova criação de script>no Editor de código. Cole o script a seguir no editor.

    /**
     * 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];
    
      // Give the column indices names matching their expected content.
      const NAME_INDEX = 0;
      const EMAIL_INDEX = 1;
      const STATUS_REPORT_INDEX = 2;
    
      // Get the range and data for the whole table.
      let bodyRange = table.getRangeBetweenHeaderAndTotal();
      let tableRowCount = bodyRange.getRowCount();
      let bodyRangeValues = bodyRange.getValues();
    
      // Create a flag to denote success.
      let statusAdded = false;
    
      // 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];
    
        // Check if the row's email address matches.
        if (row[EMAIL_INDEX] === senderEmail) {
          // Add the Teams Adaptive Card response to the table.
          bodyRange.getCell(i, STATUS_REPORT_INDEX).setValues([
            [statusReportResponse]
          ]);
          statusAdded = true;
        }
      }
    
      // If successful, log the status update.
      if (statusAdded) {
        console.log(
          `Successfully added status report for ${senderEmail} containing: ${statusReportResponse}`
        );
      }
    }
    
  4. Salve o script com o nome Status de salvamento.

Criar o fluxo do Power Automate

  1. Abra a guia Criar do Power Automate.

    Dica

    Se você ainda não criou um fluxo, marcar nosso tutorial Comece a usar scripts com o Power Automate para aprender o básico.

  2. Crie um novo fluxo de nuvem do Instant.

  3. Escolha Disparar manualmente um fluxo nas opções e selecione Criar.

  4. O fluxo precisa chamar o script Get People para obter todos os funcionários com campos de status vazios. No construtor de fluxo, selecione o + botão e Adicionar 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:

    • Localização: OneDrive for Business
    • Biblioteca de Documentos: OneDrive
    • Arquivo: task-reminders.xlsx (Escolhido por meio do navegador de arquivos)
    • Script: Get People

    A ação Executar script concluída.

  5. Em seguida, o fluxo precisa processar cada Employee na matriz retornada pelo script. Adicione o Post adaptive card do conector do Microsoft Teamse aguarde uma ação de resposta.

  6. O envio de um Cartão Adaptável requer que o JSON do card seja fornecido como a Mensagem. Você pode usar o Designer Cartão Adaptável para criar cartões personalizados. Para este exemplo, use o seguinte 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"
        }
      ]
    }
    
  7. Para o campo Destinatário , adicione email do conteúdo dinâmico (a seleção terá o logotipo do Excel ao lado). Adicionar email faz com que a etapa de fluxo seja cercada por um bloco For each . Isso significa que a matriz será iterada pelo Power Automate.

  8. Preencha os campos restantes da seguinte forma:

    • Postar como: Flow bot
    • Postar em: Chat com o bot de fluxo
    • Mensagem de atualização: Obrigado por enviar seu relatório de status. Sua resposta foi adicionada com sucesso à planilha.

    O fluxo do Power Automate mostrando a ação do card adaptável concluída.

  9. No bloco For each, seguindo o Post adaptive card e aguarde uma ação de resposta, adicione uma nova ação. Selecione a ação Executar script do conector do Excel Online (Business). Forneça as seguintes entradas para a etapa de fluxo:

    • Localização: OneDrive for Business
    • Biblioteca de Documentos: OneDrive
    • Arquivo: task-reminders.xlsx (Escolhido por meio do navegador de arquivos)
    • Script: Status de salvamento
    • senderEmail: email (conteúdo dinâmico do Excel)
    • statusReportResponse: resposta (conteúdo dinâmico do Teams)

    O fluxo do Power Automate mostrando a etapa de aplicação a cada.

  10. Salve o fluxo. O designer de fluxo deve se parecer com a imagem a seguir.

    Um diagrama do fluxo concluído que mostra duas etapas que levam a um controle For each e duas etapas dentro do controle For each.

Executando o fluxo

Para testar o fluxo, certifique-se de que as linhas da tabela com status em branco usem 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 de status no card, o fluxo continuará e atualizará a planilha com o status que você fornecer.

Antes de executar o fluxo

Uma planilha com um relatório de status contendo uma entrada de status ausente.

Recebendo o Cartão Adaptável

Um Cartão Adaptável no Teams solicitando ao funcionário uma atualização de status.

Depois de executar o fluxo

Uma planilha com um relatório de status com uma entrada de status preenchida agora.