Cenário de exemplo de Scripts do Office: lembretes de tarefa automatizados
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.
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
Esse cenário usa o Power Automate e o Microsoft Teams.
Instruções de instalação
Baixar a pasta de trabalho
Baixe a pasta de trabalho de exemplo para o OneDrive.
Abra a pasta de trabalho no Excel.
Criar os scripts
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.
/** * 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; }
Salve o script com o nome Obter Pessoas.
Em seguida, precisamos de um segundo script para processar os boletins status e colocar as novas informações na planilha. No painel de tarefas Editor de Código, selecione Novo Script e 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}` ); } }
Salve o script com o nome Salvar Status.
Criar o fluxo do Power Automate
Abra a guia Criar Automate do Power.
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.
Crie um novo fluxo de nuvem instantânea.
Escolha Disparar manualmente um fluxo nas opções e selecione Criar.
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:
- Localização: OneDrive for Business
- Biblioteca de Documentos: OneDrive
- Arquivo: task-reminders.xlsx (Escolhido por meio do navegador de arquivos)
- Script: Obter Pessoas
Em seguida, o fluxo precisa processar cada funcionário na matriz retornada pelo script. Adicione o cartão adaptável post do conector do Microsoft Teamse aguarde uma ação de resposta.
O envio de um Cartão Adaptável requer que o JSON do cartão seja fornecido como a Mensagem. Você pode usar o cartão adaptável Designer para criar cartões personalizados. Para este exemplo, use o JSON a seguir.
{ "$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" } ] }
Para o campo Destinatário , adicione email do conteúdo dinâmico (a seleção terá o logotipo do Excel por ele). A adição de email faz com que a etapa de fluxo seja cercada por um Para cada bloco. Isso significa que a matriz será iterada pelo Power Automate.
Preencha os campos restantes da seguinte maneira:
- Postar como: Bot de fluxo
- Post in: Chat com o bot Flow
- Mensagem de atualização: obrigado por enviar seu relatório de status. Sua resposta foi adicionada com êxito à planilha.
No Para cada bloco, seguindo o post adaptável cartão 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: Salvar Status
- senderEmail: email (conteúdo dinâmico do Excel)
- statusReportResponse: resposta (conteúdo dinâmico do Teams)
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
Recebendo o cartão adaptável
Depois de executar o fluxo