Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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
Baixe a pasta de trabalho de exemplo para o OneDrive.
Abra a pasta de trabalho no Excel.
Crie os scripts
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; }Salve o script com o nome Get People.
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}` ); } }Salve o script com o nome Status de salvamento.
Criar o fluxo do Power Automate
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.
Crie um novo fluxo de nuvem do Instant.
Escolha Disparar manualmente um fluxo nas opções e selecione Criar.
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
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.
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" } ] }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.
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.
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)
Salve o fluxo. O designer de fluxo deve se parecer com a imagem a seguir.
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
Recebendo o Cartão Adaptável
Depois de executar o fluxo