Tutorial: Envío de recordatorios semanales de correo electrónico basados en datos de hoja de cálculo
En este tutorial se explica cómo devolver información de un script de Office para Excel como parte de un flujo de trabajo automatizado de Power Automate . Creará un script que busca en una programación y funciona con un flujo para enviar correos electrónicos de recordatorio. Este flujo se ejecutará de forma periódica y proporcionará los recordatorios en su nombre.
Sugerencia
Si no está familiarizado con los scripts de Office, se recomienda empezar por Tutorial: Creación y formato de una tabla de Excel.
Si no está familiarizado con Power Automate, se recomienda empezar por Tutorial: Actualización de una hoja de cálculo desde un flujo de Power Automate y Tutorial: Guardar automáticamente el contenido de los correos electrónicos de un libro.
Scripts de Office usa TypeScript y este tutorial está diseñado para las personas con conocimientos de nivel intermedio de JavaScript o TypeScript. Si no está familiarizado con JavaScript, le recomendamos que comience con el Tutorial de JavaScript de Mozilla.
Requisitos previos
Necesitará acceso a Scripts de Office y Power Automate para este tutorial. Revise el soporte técnico de la plataforma si no aparece la pestaña Automatizar. Las preguntas más frecuentes sobre el registro de Power Automate tienen información sobre cómo empezar a trabajar con Power Automate.
Preparar el libro
Descargue el libro on-call-rotation.xlsx en su OneDrive.
Abra on-call-rotation.xlsx en Excel.
Agregue una fila a la tabla con su nombre, dirección de correo electrónico y fechas de inicio y finalización que se solapen con la fecha actual.
Importante
El script que escribirá usa la primera entrada coincidente de la tabla, así que asegúrese de que su nombre se encuentre encima de cualquier fila con la semana actual.
Crear un script de Office
Vaya a la pestaña Automatizar y seleccione Nuevo script.
Asigne al script el nombre Obtener persona de guardia.
Ahora debería tener un script vacío. Quiere un script que obtenga una dirección de correo electrónico de la hoja de cálculo. Cambie
main
para devolver una cadena, de la siguiente manera:function main(workbook: ExcelScript.Workbook) : string { }
A continuación, debe obtener todos los datos de la tabla. Esto permite que el script examine cada fila. Agregue el código siguiente dentro de la función
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();
Las fechas de la tabla se almacenan con el número de serie de la fecha de Excel. Debe convertir esas fechas en fechas de JavaScript para poder compararlas. Agregue la siguiente función auxiliar fuera de la
main
función.// 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; }
Ahora, tienes que averiguar qué persona está de guardia en este momento. La fila tendrá una fecha de inicio y una de finalización en torno a la fecha actual. El script supone que solo una persona está en llamada a la vez. Los scripts pueden devolver matrices para controlar varios valores, pero puede devolver la primera dirección de correo electrónico coincidente para este tutorial. Agregue el siguiente código al final de la función
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(); } }
El script final debería tener un aspecto similar al siguiente:
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; }
Crear un flujo de trabajo automatizado con Power Automate
Inicie sesión en el sitio de Power Automate.
En el menú que se muestra en la parte izquierda de la pantalla, seleccione Crear. Se mostrará una lista de maneras de crear flujos de trabajo nuevos.
En la sección Empezar desde cero, seleccione Flujo de nube programado.
A continuación, establezca la programación de este flujo. La hoja de cálculo tiene una nueva asignación de llamada a partir de los lunes de la primera mitad de 2024. Establezca el flujo para que se ejecute a primera hora los lunes por la mañana. Use las opciones siguientes para configurar el flujo de ejecución el lunes de cada semana.
- Nombre de flujo: notificar a la persona de guardia
- A partir de: 27/11/23 a la 1:00 a.m.
- Repetir cada: 1 semana
- En estos días: L
Seleccione Crear.
En el generador de flujos, seleccione el + botón y Agregar una acción.
En el panel de tareas Agregar una acción , busque "Script de ejecución de Excel". Elija la acción Ejecutar script del conector de Excel Online (Empresa). Esta acción ejecuta un script desde OneDrive en un libro. Si desea usar un script almacenado en la biblioteca de SharePoint del equipo, debe usar la acción Ejecutar script desde una biblioteca de SharePoint .
Es posible que se le pida que inicie sesión en su cuenta de Microsoft 365. Hágalo para continuar con el tutorial.
A continuación, seleccione el libro y el script que va a usar en el paso de flujo. En el tutorial, usará el libro que creó en OneDrive, pero puede usar cualquier libro en un sitio de OneDrive o SharePoint. Especifique los parámetros siguientes para la acción Ejecutar script :
- Ubicación: OneDrive para la Empresa
- Biblioteca de documentos: OneDrive
- Archivo: on-call-rotation.xlsx (seleccionado en el explorador de archivos)
- Script: obtener persona de guardia
En el generador de flujos, seleccione el + botón y Agregar una acción.
Para finalizar el flujo, envíe el correo electrónico del recordatorio. En el panel de tareas Agregar una acción , busque "enviar un correo electrónico". Elija la acción Enviar un correo electrónico (V2) del conector de Outlook de Office 365.
Nota:
Este tutorial usa Outlook. Puede usar el servicio de correo electrónico que prefiera, aunque algunas opciones pueden ser diferentes.
En el parámetro To , seleccione el cuadro de texto y seleccione Escribir valor personalizado. Use el control de contenido dinámico para agregar la dirección de correo electrónico devuelta por el script. Se etiquetará como resultado con el icono de Excel situado al lado. Puede proporcionar el asunto y el texto de cuerpo que prefiera.
Seleccione Guardar.
Probar el script en Power Automate
El flujo se ejecutará cada lunes por la mañana. Para probar el script ahora, seleccione el botón Probar en la esquina superior derecha de la pantalla. Seleccione Manualmente y después seleccione Ejecutar prueba para ejecutar el flujo ahora y probar el comportamiento. Es posible que deba conceder permisos a Excel y Outlook para continuar.
Sugerencia
Si el flujo no puede enviar un correo electrónico, vuelva a comprobar en la hoja de cálculo que se muestra un correo electrónico válido para el intervalo de fechas actual en la parte superior de la tabla.
Pasos siguientes
Visite Ejecutar scripts de Office con Power Automate para más información sobre la conexión de Scripts de Office con Power Automate.
También puede consultar el Escenario de muestra de recordatorios de tareas automatizados para aprender a combinar los Scripts de Office y Power Automate con las Tarjetas adaptables de Teams.