9 mayo, 2021

EJECUTAR CÓDIGO DE TYPESCRIPT UTILIZANDO FLUJO DE POWER AUTOMATE

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.

Donate Button with Credit Cards

¡¡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

Comparte este post

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies