Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tutorial se explica cómo usar un script de Office para Excel con un flujo de trabajo automatizado de Power Automate . El script se ejecuta automáticamente cada vez que recibe un correo electrónico y registra información del correo electrónico en un libro de Excel. Pasar datos de otras aplicaciones a un script de Office le ofrece una gran flexibilidad y libertad para sus procesos automatizados.
Sugerencia
Si no está familiarizado con los scripts de Office, comience con Tutorial: Creación y formato de una tabla de Excel. Si no está familiarizado con Power Automate, comience con Tutorial: Actualización de una hoja de cálculo desde un flujo de Power Automate. 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, comience con el tutorial de Mozilla JavaScript.
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
Power Automate no debe usar referencias relativas como Workbook.getActiveWorksheet para acceder a componentes de libros de trabajo. Por lo tanto, necesita un libro y una hoja de cálculo con nombres coherentes para que Power Automate haga referencia.
Cree un nuevo libro de trabajo y llámelo Mi libro de trabajo.
Vaya a la pestaña Automatizar y seleccione Nuevo script.
Reemplace el código existente con el siguiente script y seleccione Ejecutar. En este paso se configura el libro con nombres coherentes de hoja de cálculo, tabla y tabla dinámica.
function main(workbook: ExcelScript.Workbook) { // Add a new worksheet to store the email table. let emailsSheet = workbook.addWorksheet("Emails"); // Add data and create a table emailsSheet.getRange("A1:D1").setValues([ ["Date", "Day of the week", "Email address", "Subject"] ]); let newTable = workbook.addTable(emailsSheet.getRange("A1:D2"), true); newTable.setName("EmailTable"); // Add a new PivotTable to a new worksheet let pivotWorksheet = workbook.addWorksheet("Subjects"); let newPivotTable = workbook.addPivotTable("Pivot", "EmailTable", pivotWorksheet.getRange("A3:C20")); // Setup the pivot hierarchies newPivotTable.addRowHierarchy(newPivotTable.getHierarchy("Day of the week")); newPivotTable.addRowHierarchy(newPivotTable.getHierarchy("Email address")); newPivotTable.addDataHierarchy(newPivotTable.getHierarchy("Subject")); }
Crear un script de Office
Cree un script que registre información de un correo electrónico. Quiere realizar un seguimiento de qué días de la semana recibe más correo y cuántos remitentes únicos envían ese correo. El libro tiene una tabla con las columnas Fecha, Día de la semana, Dirección Email y Asunto. La hoja de cálculo también tiene una tabla dinámica que se basa en el día de la semana y Email dirección (esas son las jerarquías de fila). El recuento de Asuntos únicos es la información agregada que se muestra (la jerarquía de datos). El script actualiza esa tabla dinámica después de actualizar la tabla de correo electrónico.
Desde el panel de tareas del Editor de código, seleccione Nuevo script.
El flujo que cree más adelante en el tutorial envía la información de script sobre cada correo electrónico que se recibe. El script necesita aceptar esa entrada mediante parámetros en la función
main. Reemplace el script predeterminado con el siguiente script.function main( workbook: ExcelScript.Workbook, from: string, dateReceived: string, subject: string) { }El script necesita acceso a la tabla del libro de trabajo y a la tabla dinámica. Agregue el código siguiente al cuerpo del script, después de abrir
{.// Get the email table. let emailWorksheet = workbook.getWorksheet("Emails"); let table = emailWorksheet.getTable("EmailTable"); // Get the PivotTable. let pivotTableWorksheet = workbook.getWorksheet("Subjects"); let pivotTable = pivotTableWorksheet.getPivotTable("Pivot");El parámetro
dateReceivedes de tipostring. Conviértalo en unDateobjeto para que puedas obtener fácilmente el día de la semana. Después de hacerlo, debe asignar el valor de número del día a una versión más legible. Agregue el código siguiente al final del script, antes de cerrar}.// Parse the received date string to determine the day of the week. let emailDate = new Date(dateReceived); let dayName = emailDate.toLocaleDateString("en-US", { weekday: 'long' });La
subjectcadena puede incluir la etiqueta de respuesta "RE:". Quite esa etiqueta de la cadena para que los correos electrónicos del mismo subproceso tengan el mismo asunto para la tabla. Agregue el código siguiente al final del script, antes de cerrar}.// Remove the reply tag from the email subject to group emails on the same thread. let subjectText = subject.replace("Re: ", ""); subjectText = subjectText.replace("RE: ", "");Ahora que se da formato a los datos de correo electrónico, agregue una fila a la tabla de correo electrónico. Agregue el código siguiente al final del script, antes de cerrar
}.// Add the parsed text to the table. table.addRow(-1, [dateReceived, dayName, from, subjectText]);Por último, asegúrese de que se actualiza la tabla dinámica. Agregue el código siguiente al final del script, antes del cierre
}:// Refresh the PivotTable to include the new row. pivotTable.refresh();Cambie el nombre del script Registrar correo electrónico y seleccione Guardar script.
El script ya está preparado para un flujo de trabajo de Power Automate. Debería tener un aspecto similar al siguiente script.
function main(
workbook: ExcelScript.Workbook,
from: string,
dateReceived: string,
subject: string) {
// Get the email table.
let emailWorksheet = workbook.getWorksheet("Emails");
let table = emailWorksheet.getTable("EmailTable");
// Get the PivotTable.
let pivotTableWorksheet = workbook.getWorksheet("Subjects");
let pivotTable = pivotTableWorksheet.getPivotTable("Pivot");
// Parse the received date string to determine the day of the week.
let emailDate = new Date(dateReceived);
let dayName = emailDate.toLocaleDateString("en-US", { weekday: 'long' });
// Remove the reply tag from the email subject to group emails on the same thread.
let subjectText = subject.replace("Re: ", "");
subjectText = subjectText.replace("RE: ", "");
// Add the parsed text to the table.
table.addRow(-1, [dateReceived, dayName, from, subjectText]);
// Refresh the PivotTable to include the new row.
pivotTable.refresh();
}
Crear un flujo de trabajo automatizado con Power Automate
Inicie sesión en el sitio de Power Automate.
En el menú del lado izquierdo de la pantalla, seleccione Crear. Esta selección le lleva a una lista de formas de crear nuevos flujos de trabajo.
En la sección Inicio desde cero, seleccione Flujo automatizado. Esta selección crea un flujo de trabajo desencadenado por un evento, como recibir un correo electrónico.
En la ventana de diálogo que aparece, escriba un nombre para su flujo en el cuadro de texto Nombre de flujo. En Elegir el desencadenador del flujo, seleccione Cuando llegue un nuevo correo electrónico en la lista de opciones. Es posible que tenga que buscar la opción mediante el cuadro de búsqueda. Por último, seleccione Crear.
Nota:
Este tutorial usa Outlook. Puede usar su servicio de correo electrónico preferido en su lugar, pero algunas opciones pueden ser diferentes.
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". Seleccione la acción Ejecutar script del conector 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, use 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. Inicie sesión para continuar con el tutorial.
A continuación, seleccione el libro y el script que se van a usar en el paso de flujo. Para el tutorial, use 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: MyWorkbook.xlsx (seleccionado por el explorador de archivos)
- Script: Registrar correo electrónico
- ScriptParameters/from: From (contenido dinámico de Outlook)
- ScriptParameters/dateReceived: tiempo recibido (contenido dinámico de Outlook)
- ScriptParameters/subject: Asunto (contenido dinámico de Outlook)
Tenga en cuenta que los parámetros del script solo aparecen después de seleccionar el script.
Haga clic en Guardar.
El flujo está ahora habilitado. Ejecuta automáticamente el script cada vez que recibe un correo electrónico a través de Outlook.
Administrar el script en Power Automate
En la página principal de Power Automate, seleccione Mis flujos.
Seleccione el flujo. Aquí puede ver el historial de ejecución. Puede actualizar la página o seleccionar el botón actualizar Todas las ejecuciones para actualizar el historial. El flujo se desencadena poco después de recibir un correo electrónico. Pruebe el flujo enviándose un correo electrónico a sí mismo.
Cuando el flujo se desencadena y ejecuta correctamente el script, verá la tabla del libro y la actualización de la tabla dinámica.
Solución de problemas
Recibir varios correos electrónicos al mismo tiempo puede causar conflictos de combinación en Excel. Este riesgo se mitiga configurando el conector de correo electrónico para que solo actúe en un correo electrónico a la vez. Para realizar este paso:
Seleccione la acción "llega el correo electrónico" y, a continuación, seleccione Configuración.
En la Configuración en las opciones emergentes, establezca Control de simultaneidad en Activado. A continuación, establezca el grado de paralelismo en 1.
Pasos siguientes
Tutorial completo: Enviar recordatorios de correo electrónico semanales basados en datos de hoja de cálculo. Muestra cómo devolver datos de un script al flujo.
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.