Tutorial: Enviar lembretes de email semanais com base em dados de planilha
Este tutorial ensina como retornar informações de um Script do Office para Excel como parte de um fluxo de trabalho automatizado do Power Automate . Você fará um script que olha através de uma programação e trabalha com um fluxo para enviar emails de lembrete. Esse fluxo será executado em uma programação regular, fornecendo esses lembretes em seu nome.
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 e tutorial do Power Automate: salve automaticamente o conteúdo de emails em uma pasta de trabalho.
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
Baixe a pasta de trabalho on-call-rotation.xlsx para o seu OneDrive.
Abra on-call-rotation.xlsx no Excel.
Adicione uma linha à tabela com seu nome, endereço de email e datas de início e fim que coincidam com a data atual.
Importante
O roteiro que você vai escrever utiliza a primeira entrada correspondente na tabela, portanto, certifique-se de que seu nome esteja acima de qualquer linha com a semana atual.
Criar um Script do Office
Acesse a guia Automatizar e selecioneNovo Script.
Nomeie o script Obter uma Pessoa de Plantão.
Agora você deve ter um script vazio. Você deseja um script que obtenha um endereço de email da planilha. Altere
main
para retornar uma cadeia de caracteres, como esta:function main(workbook: ExcelScript.Workbook) : string { }
Em seguida, você precisa obter todos os dados da tabela. Isso permite que o script examine cada linha. Adicione o seguinte código dentro da função
main
.// Get the H1 worksheet. let worksheet = workbook.getWorksheet("H1"); // Get the first (and only) table in the worksheet. let table = worksheet.getTables()[0]; // Get the data from the table. let tableValues = table.getRangeBetweenHeaderAndTotal().getValues();
As datas na tabela são armazenadas usando o Número de série da data do Excel . Você precisa converter essas datas em datas JavaScript para compará-las. Adicione a função auxiliar a seguir fora da
main
função.// Convert the Excel date to a JavaScript Date object. function convertDate(excelDateValue: number) { let javaScriptDate = new Date(Math.round((excelDateValue - 25569) * 86400 * 1000)); return javaScriptDate; }
Agora, você precisa descobrir qual pessoa está de plantão agora. A linha deles terá uma data de início e de término em torno da data atual. O script pressupõe que apenas uma pessoa esteja de plantão por vez. Os scripts podem retornar matrizes para lidar com vários valores, mas você pode retornar o primeiro endereço de email correspondente para este tutorial. Adicione o seguinte código ao final da função
main
.// Look for the first row where today's date is between the row's start and end dates. let currentDate = new Date(); for (let row = 0; row < tableValues.length; row++) { let startDate = convertDate(tableValues[row][2] as number); let endDate = convertDate(tableValues[row][3] as number); if (startDate <= currentDate && endDate >= currentDate) { // Return the first matching email address. return tableValues[row][1].toString(); } }
O script final deve ser semelhante a este:
function main(workbook: ExcelScript.Workbook) : string { // Get the H1 worksheet. let worksheet = workbook.getWorksheet("H1"); // Get the first (and only) table in the worksheet. let table = worksheet.getTables()[0]; // Get the data from the table. let tableValues = table.getRangeBetweenHeaderAndTotal().getValues(); // Look for the first row where today's date is between the row's start and end dates. let currentDate = new Date(); for (let row = 0; row < tableValues.length; row++) { let startDate = convertDate(tableValues[row][2] as number); let endDate = convertDate(tableValues[row][3] as number); if (startDate <= currentDate && endDate >= currentDate) { // Return the first matching email address. return tableValues[row][1].toString(); } } } // Convert the Excel date to a JavaScript Date object. function convertDate(excelDateValue: number) { let javaScriptDate = new Date(Math.round((excelDateValue - 25569) * 86400 * 1000)); return javaScriptDate; }
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 Iniciar de um Modelo em Branco, selecione Fluxo de nuvem agendado.
Em seguida, defina a agenda para esse fluxo. Sua planilha tem uma nova atribuição de chamada a partir de segunda-feira no primeiro semestre de 2024. Defina o fluxo para ser executado na segunda de manhã. Use as seguintes opções para configurar o fluxo a ser executado na segunda-feira de cada semana.
- Nome do fluxo: Notificar a Pessoa de Plantão
- Começando: 27/11/23 à 1h
- Repetir a cada: 1 Semana
- Nesses dias: M
Selecione Criar.
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: on-call-rotation.xlsx (Escolhido através do navegador de arquivos)
- Script: Obter uma Pessoa de Plantão
No construtor de fluxos, selecione o + botão e Adicione uma ação.
Termine o fluxo enviando o email de lembrete. No painel Adicionar uma tarefa de ação , procure por "enviar um email". Escolha a ação Enviar um email (V2) do conector do Office 365 Outlook.
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.
Para o parâmetro To , selecione a caixa de texto e selecione Inserir valor personalizado. Use o controle de conteúdo dinâmico para adicionar o endereço de email retornado pelo script. Ele será rotulado como resultado com o ícone do Excel próximo a ele. Você pode fornecer qualquer assunto e corpo de texto que desejar.
Selecione Salvar.
Teste o script no Power Automate
Seu fluxo funcionará todas as segundas-feiras de manhã. Você pode testar o script agora, selecionando o botão Testar no canto superior direito da tela. Selecione Manualmente e, em seguida, selecione Executar teste para executar o fluxo agora e testar o comportamento. Pode ser necessário conceder permissões ao Excel e Outlook para continuar.
Dica
Se o seu fluxo não enviar um email, verifique na planilha se um email válido está listado para o intervalo de datas atual na parte superior da tabela.
Próximas etapas
Visite executar os Scripts do Office com o Power Automate para saber mais sobre como conectar Scripts do Office com o Power Automate.
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.