Llevo ya una temporada creando rutinas y funciones en typescript, es el lenguaje de programación que se utiliza para programar, por ejemplo, excel online.
Aunque lo podemos ejecutar en la ficha «Automatizar» de Excel o en laboratorio de script (Scripts Labs), la mejor forma de hacerlo es utilizando Power Automate.
Para que os podáis iniciar en este programa os he dejado el enlace y podréis hacer lo siguiente:
- Automatizar los procesos empresariales.
- Enviar recordatorios automáticos sobre tareas vencidas.
- Mover datos empresariales entre sistemas según una programación.
- Conectar a casi 300 fuentes de datos o cualquier API disponible públicamente.
- Puede incluso automatizar tareas en su equipo local, como calcular datos en Excel.
En efecto, se pueden automatizar un gran volumen de procesos empresariales y, en ellos, excel y la versión online, dado que podremos ejecutar scripts a través de la creación de nuestro propio flujo.
Por ejemplo, imaginad que tenemos en excel online el siguiente código en nuestra biblioteca de scripts:
async function main(workbook: ExcelScript.Workbook) {
let MiHoja = workbook.getWorksheet("MIEJEMPLO");
//cargamos valores de filas y columna
let MiRangoRow = MiHoja.getUsedRange();
let MiRangoCol = MiHoja.getUsedRange();
//Pasamos valores a variables
let FinRow = MiRangoRow.getRowCount();
let FinCol = MiRangoCol.getColumnCount();
//Antes de proceder limpiamos contenido columnas B:D
MiHoja.getRangeByIndexes(1, 1, FinRow, FinCol).clear(ExcelScript.ClearApplyTo.all);
// Escribimos encabezados de columna
MiHoja.getCell(0, 1).setValues([
["DIA"]
]);
MiHoja.getCell(0, 2).setValues([
["MES"]
]);
MiHoja.getCell(0, 3).setValues([
["AÑO"]
]);
MiHoja.getCell(0, 4).setValues([
["DIA FÓRMULA"]
]);
MiHoja.getCell(0, 5).setValues([
["MES FÓRMULA"]
]);
MiHoja.getCell(0, 6).setValues([
["AÑO FÓRMULA"]
]);
// cargamos en variable Info el contenido columna A
let Info = MiHoja.getRangeByIndexes(0, 0, FinRow, 1).getValues();
for (let i = 1; i < FinRow; i++) {
//Pasamos valores almacenados de fecha de Excel a fecha de JavaScript
let MiInfo = Info[i];
let MiFecha = new Date(Math.round((+MiInfo - 25569) * 86400 * 1000));
// Extraemos día, mes y año
let DIA = MiFecha.getUTCDate();
let MES = MiFecha.getUTCMonth() + 1;
let AÑO = MiFecha.getFullYear();
// Pasamos resultado a la hoja
MiHoja.getCell(i, 1).setValues([
[DIA]
])
MiHoja.getCell(i, 2).setValues([
[MES]
])
MiHoja.getCell(i, 3).setValues([
[AÑO]
])
// Ejecutamos funciones (dia, mes y año)
// pasamos resultado a la hoja
MiHoja.getCell(i, 4).setFormulas([
["=DAY(A" + (i + 1)]
]);
MiHoja.getCell(i, 5).setFormulas([
["=MONTH(A" + (i + 1)]
]);
MiHoja.getCell(i, 6).setFormulas([
["=YEAR(A" + (i + 1)]
]);
}
}
Este código lo vamos a ejecutar en la hoja 2 para extraer el año, el mes y el día de la fecha de la columna A.
Lo primero será crear un flujo, y para este ejemplo lo haré directamente, sin plantilla, eligiendo «Flujo de nube automatizado».
Y a continuación seleccionar el desencadenador del flujo: «Cuando llega un nuevo correo electrónico (V3)»
Una vez seleccionamos y elegimos, disponemos a seleccionar «Bandeja de entrada» y configuramos las siguientes acciones: cuando llegue al correo electrónico con el que nos hemos vinculado a nuestra cuenta de Excel Online, un email con la palabra «PRUEBA» en el asunto y la importancia sea «alta» (High), automáticamente se ejecutará nuestro script.
Después debemos añadir un paso más, y seleccionamos «Ejecutar script (vista previa)»
Y completamos los datos que nos solicita el proceso:
Finalmente aceptamos y ya tenemos el flujo creado:
Para comprobar si nuestro flujo funciona correctamente podemos probarlo, basta con editar el flujo y pulsar en «Probar»:
Y entonces podremos hacerlo o bien manualmente o de forma automática y si es posible con un desencadenador usado recientemente, en este caso tengo 3 ejecuciones que he realizado de forma correcta y que podría usar.
Y ya está. nuestro script se ejecutará cada vez que llegue a la bandeja de entrada del correo especificado y vinculado al usuario de Excel Online, un email donde el asunto sea PRUEBA y su importancia sea Alta..
El resultado es este:
El script correctamente ejecutado 🙂
Y esto es todo, espero que os sea de utilidad.
Lo cierto es que Power Automate ofrece una sorprendente cantidad de opciones de automatización y que es un recurso muy a tener en cuenta a la hora de diseñar nuestros flujos y procesos. Yo ya llevo tiempo trabajando con algunas de sus utilidad (y muchas que aún no he podido probar) y os recomiendo que os vayáis acercando a la documentación.
¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.
¡¡Muchas gracias!!
Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies