Convertir una columna de texto de una lista SharePoint en una de tipo búsqueda con Flow

  • 22 Dic 2020
  • Microsoft Power Automate

Escenario

Migración de varias tablas de Excel a listas de SharePoint creando un modelo relacional (digamos...) utilizando columnas de tipo LookUp (búsqueda en español). Durante la importación de Excel hacia SharePoint no es posible crear o cargar datos dentro columnas de tipo búsqueda. Una posible solución es crear en Excel columnas auxiliares con un identificador único (un ID) que corresponderá al ID de la lista de SharePoint correspondiente. Por ejemplo: Imaginemos tener las siguientes dos tablas en Excel:

Para crear un modelo relacional, creamos primero una columna en la tabla país de nombre pais_id (evitar llamarla simplemente ID) con un número incremental comenzando por 1. Luego, en la tabla empresas, creamos una columna de nombre pais_id con el valor correspondiente de pais_id de la tabla paises utilizando la función BUSCARX. El resultado final debería ser más o menos este:

# tabla pais
+---------------+------+---------+
|    nombre     | iso2 | pais_id |
+---------------+------+---------+
| Afganistan    | AF   |       1 |
| Aland Islands | AX   |       2 |
| Albania       | AL   |       3 |
| ...           |      |         |
+---------------+------+---------+

#tabla empresa
+---------+----------+---------+---------+
| emprea  | contacto |  país   | pais_id |
+---------+----------+---------+---------+
| Contoso | Jhnson   | Albania |       1 |
| ...     |          |         |         |
+---------+----------+---------+---------+

Antes de importar estas dos tablas en SharePoint, no estaría mal copiar y pegar (solo valores) en la columna con la formula BUSCARX para después poder eliminar la columna "país". Esto nos permitirá más adelante poder crear la columna definitiva de tipo búsqueda en SharePoint con el nombre pais... en vez de un pais_algo que quedaría un poco feo. Es cierto que los nombres se pueden siempre cambiar.. pero si usamos esta lista en PowerApps, los nombres no van a ser exactamente lo que parecen.

Exportar tablas de Excel en SharePoint

Este es el paso más simple de todos (para trabajar menos, copio y pego los pasos del sitio de Microsoft) Antes de comenzar, ordenar la tabla pais con los datos de la columna pais_id, de este modo, pais_id tendrá el mismo valor de la columna ID predeterminada de la lista de SharePoint

  1. Haga clic dentro de la tabla.
  2. Haga clic en diseño > exportar > Exportar tabla a una lista de SharePoint.
  3. En el cuadro Dirección , escriba la dirección o la dirección URL del sitio de SharePoint.
  4. En el cuadro nombre , escriba un nombre único para la lista.
  5. De manera opcional, escriba una descripción en el cuadro Descripción .
  6. Haga clic en Siguiente.
  7. Revise la información que aparece en columnas y tipos de datos y, a continuación, haga clic en Finalizar.
  8. Haga clic en Aceptar.

Crear una columna de tipo búsqueda y cargarla de datos

Básicamente, lo que debemos hacer ahora es crear una columna de tipo búsqueda en la lista SharePoint empresa de nombre pais en la columna ID. Si queremos podemos seleccionar otras columnas de la lista pais, como por ejemplo nombre.

Nueva columna búsqueda en la lista empresa

Cargar los valores que correspondan dentro la nueva columna con Microsoft Automate

Para cargar los datos en la nueva columna búsqueda, utilizaremos un Flow con la siguiente lógica:

  1. Toma todos los valores de empresa (val_empresa)
  2. Toma todos los valores de pais (val_pais)
  3. Bucle: Para cada valor de val_empresa
    1. Busca en todos los valores de val_pais donde: val_empresa.pais_id = val_pais.ID
    2. Si lo encuentro, actualizar este item val_empresa indicando que pais Id (nuestra columna búsqueda) sea igual a val_pais.ID

 

Flow para cargar datos en la columna de búsqueda

En el último paso, el que actualiza el item de la lista SharePoint, el valor que debemos indicar en pais Id debe ser un número entero. El resultado de la función Filter array es siempre un array, por eso, la función dentro el campo pais id es:

first(body('Filter_array'))['ID']

Antes de ejecutar un Flow que modificará elementos de una lista es aconsejable testearlo. Por ejemplo, antes de ir derecho con la función "Update item" utilizar Compose y verificar que el resultado de las funciones sea el esperado. También podemos limitar la cantidad de elementos a actualizar utilizando el parámetro pagination junto a top count en la configuración del primer Get items.