26 agosto, 2026

UTILIZAR CAMPOS CON ESPACIOS EN BLANCO EN SELECT QUERY DE POWER AUTOMATE

Hola a todos,

Hace ya un par de semanas que llevo analizando alternativas a una problemática que me ha surgido. Os cuento de qué se trata: tengo una tabla de Excel muy grande y que estoy intentando leer con Power Automate para pasar a una lista, y el problema es que la acción «Enumerar las filas de una tabla» no finaliza y muestra este error:

Y no hay forma de evitar que esto sea sea así, incluso utilizando una licencia Premium. Ante esta circunstancia tengo la siguiente problemática: No puedo reducir la tabla, es decir, no puedo eliminar columnas ni filas. Es lo que hay.

Teniendo en cuenta esto, decidí utilizar la siguiente opción de Enumerar las filas de una tabla»:

Decidí utilizar la consulta de selección (Select Query) y leer únicamente los campos que necesito. De esta forma evitaría el error anterior.

Antes de continuar, os aclaro que la tabla de la que quiero leer los campos se llama TABLA_API (el nombre es así porque es el archivo de un ejemplo anterior):

Y la lista de SharePoint que quiero completar es esta:

Y cuando ejecuto el flujo detallando los campos en Select Query, resulta que sorprendentemente muestra un error, ya que, uno de los campos tiene espacios en blanco, NOMBRE COMPLETO. Entonces doy por hecho que se tendré que marcar la palabra con corchetes, o con comillas simples o utilizar algún caracter especial … pero resultado que NO!!. Y he estado muchos días buscando algo que me permitiese avanzar y no hubo forma.

Entonces he ideado otra alternativa, que desde luego, me está funcionando.

Lo que he hecho es lo siguiente, he creado dos script en OfficeScript que van a realizar lo siguiente, el primero va a sustituir el espacio de la palabra o palabras que yo indique por un guion bajo «_» y el segundo script va a dejar la palabra de nuevo con el espacio. (recordad que TABLA_API debe quedar igual).

Estos son los dos scripts:

REEMPLAZAR ESPACIOS EN BLANCO:

function main(workbook: ExcelScript.Workbook) {
    // Define el nombre de la hoja y la tabla a modificar
    let nombreHoja = "Hoja1";  
    let nombreTabla = "TABLA_API"; 
    let hoja = workbook.getWorksheet(nombreHoja);
    let tabla = hoja.getTable(nombreTabla);
    // Obtienemos los encabezados de la tabla
    let rangoEncabezados = tabla.getHeaderRowRange();
    let encabezados = rangoEncabezados.getValues()[0];
    // columnas a modificar
    let columnasParaModificar = ["NOMBRE COMPLETO"];
    // Guardamos nombres
    let nuevosEncabezados: string[] = [];
    // Reemplazamos los espacios
    encabezados.forEach(encabezado => {
        // Si no es cadena, lo pasamos a cadena
        let encabezadoString = String(encabezado);
        if (columnasParaModificar.includes(encabezadoString)) {
            let nuevoEncabezado = encabezadoString.replace(/ /g, "_");
            nuevosEncabezados.push(nuevoEncabezado);
        } else {
            // Si no está en la lista, deja el nombre de la columna tal como está
            nuevosEncabezados.push(encabezadoString);
        }
    });
    let nuevoRangoEncabezados: string[][] = [nuevosEncabezados];
    rangoEncabezados.setValues(nuevoRangoEncabezados);
}

REVERTIR ESPACIOS EN BLANCO

function main(workbook: ExcelScript.Workbook) {
    let nombreHoja = "Hoja1";  
    let nombreTabla = "TABLA_API"; 
    let hoja = workbook.getWorksheet(nombreHoja);
    let tabla = hoja.getTable(nombreTabla);
    // Obtenemos los encabezados de la tabla
    let rangoEncabezados = tabla.getHeaderRowRange();
    let encabezados = rangoEncabezados.getValues()[0];
    // Listamos nombres de columnas a revertir
    let columnasParaRevertir = ["NOMBRE_COMPLETO"];
    let nuevosEncabezados: string[] = [];
    // Reemplazamos
    encabezados.forEach(encabezado => {
        let encabezadoString = String(encabezado);
        if (columnasParaRevertir.includes(encabezadoString)) {
            let nuevoEncabezado = encabezadoString.replace(/_/g, " ");
            nuevosEncabezados.push(nuevoEncabezado);
        } else {
            nuevosEncabezados.push(encabezadoString);
        }
    });
    let nuevoRangoEncabezados: string[][] = [nuevosEncabezados];
    rangoEncabezados.setValues(nuevoRangoEncabezados);
}

Y los guardamos en nuestra biblioteca de scripts:

Y de esta forma, ejecuté de nuevo el flujo:

Y efectivamente, la acción «Enumerar las filas de una tabla» ya funcionaba bien, y por lo tanto ya tenía los datos de los campos que había especificado:

Observad que he escrito NOMBRE_COMPLETO con un guion bajo, ya que el script lo ha cambiado en la tabla y si quiero que ahora pueda leer el campo correctamente, debo especificarlo así.

Pero surge otro problema, y este es cuando quiero subir la información a la lista. Resulta que la acción «crear elemento» de SharePoint, en el momento de crear el flujo ya obtiene el nombre de los campos del archivo de Excel. Es decir, que ha obtenido el nombre inicial (NOMBRE COMPLETO) sin el guion.

Fijaos en el detalle, crear elemento sí admite espacios en blanco!!!!. Pero sigamos … ahora el problema que tenemos que la acción «crear elemento» no sube información de NOMBRE COMPLETO porque no lleva el guion bajo.

Para solucionar este problema, decidí utilizar una expresión y reemplaza el espacio en blanco por un guion.

replace(items('Aplicar_a_cada_uno')?['NOMBRE_COMPLETO'], '_', ' ')

Y esto fue estupendo, ya que al fin funcionó todo el flujo y la tabla inicial sigue exactamente igual y mi lista se ha cargado completamente con los campos que necesitaba.

Y esto es todo. Espero que en breve podamos pasar campos con espacios en blanco por una consulta de selección en Power Automate.

Saludos!!

Comparte este post

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