En el post de hoy no voy a hablar de ninguna aplicación de Office365 en concreto, sino que os voy a enseñar la solución que encontré a un problema que me surgió recientemente.
En un Gestor Documental de SharePoint Online tenemos implementadas una serie de bibliotecas en la que los archivos se almacenan dentro de unos Conjuntos de Documentos (Documents Sets) con una serie de metadatos.
Se ha creado una biblioteca para cada año de forma que cada biblioteca debería contener sólo los Conjuntos de Documentos correspondientes a su año.
Lo que ocurre es que, algunos usuarios, crearon por error Conjuntos de Documentos en las bibliotecas que no eran las de su año, por lo que surgió la necesidad de moverlos a la biblioteca adecuada.
Así que, me puse manos a la obra para buscar la forma de hacerlo.
Como información os digo que a pesar de ser un sitio moderno, las bibliotecas están definidas en modo clásico ya que hay implementados unos editores de contenido en las vistas para darles un determinado formato.
Lo primero que pensé es utilizar la opción “Enviar a” que hay en la Ribbon, pero, como veréis en la siguiente imagen, esta opción está deshabilitada para carpetas:

Tampoco es viable la opción de “Enviar a otra ubicación” que hay en el menú contextual del document set ya que no tenemos definidas las direcciones de envío y no tenemos acceso a la Administración Central.
La siguiente opción que pensé es utilizar la opción de ‘Mover a‘ o ‘Copiar en‘ que hay en la vista moderna, pero tampoco es viable con documents sets ya que sólo me dejaba moverlos dentro de las carpetas de la misma biblioteca.

También intenté hacerlo a través de la antigua ventana de Contenido y Estructura (http://{YOURSITENAME}/_layouts/15/sitemanager.aspx), pero no funcionó.
La única opción que quedaba era desarrollar un PowerShell, pero se me ocurrió intentar hacerlo mediante Flow (ahora llamado Power Automate) para ver si era viable y… efectivamente ¡funcionó!.
Los Documents Sets se mueven con todo su contenido, mantienen el tipo de contenido y sus metadatos. De hecho, mantienen hasta el ID, lo cual implica que los siguientes elementos que se creen en la biblioteca de destino partirán desde ese último ID que acabamos de mover.
Os pongo los pasos de los que consta mi Flow
Esquema del Flow (Power Automate)
Desencadenador (Trigger)
Lo primero que hice es un Flow que se disparase bajo demanda y en el disparador incluí una serie de parámetros necesarios para luego filtrar los Documents Sets que quiero mover. Además le puse un Check (SI/NO) que indica si quiero lanzar definitivamente el flujo o sólo es una prueba. Esto me permite testear antes que el filtro está cogiendo los Documents sets que quiero.

Variables
El siguiente paso es inicializar una variable de cadena donde alojar el filtro de la consulta oData que utilizaré a la hora de recoger los Documents Sets. En el filtro se utiliza el tipo de contenido del Document Set y el resto de condiciones que sean necesarias:

Luego se inicializa otra variable de cadena (en blanco) que me servirá para ir viendo los nombres de los Documents Sets.

Consulta de archivos (Documents Sets)
Ahora, mediante la acción Obtener archivos (sólo propiedades) de SharePoint, obtendremos todos los Documents Sets de la biblioteca desde la que queremos moverlos utilizando como filtro la variable inicializada anteriormente.

Bucle con los resultados
La siguiente parte del flujo es el bucle que se ejecuta para recorrer todos los elementos que se recogen en la acción anterior que tiene los siguientes pasos:
- Lo primero que hago es guardar en la variable strFOLDER el nombre del Document Set (FilenameWithExtension) que me será útil para saber qué estoy moviendo.
- Después introduzco la condición para saber si efectivamente quiero hacer el movimiento, o es sólo un test (RUN FLOW = false). Como los nombres de los Documents Sets ya están almacenados en la variable strFOLDER, cuando acabe el flow, podré revisar en esa variable si son los Document Set que yo quería mover.
- En caso de que se haya indicado que sí se quiera realizar el movimiento de los Documents Sets (RUN FLOW = true) , mediante la acción de SharePoint de Mover carpeta, se hace el movimiento del Document Set en el que está el bucle utilizando el campo Identificador (Identifier) hacia la biblioteca de destino.

En la variable strFOLDER se pueden observar los nombres de los Documents Sets que se obtuvieron con la consulta por lo que se puede hacer una ejecución previa de prueba y verificar en esta variable que se va a mover lo que efectivamente queremos.

Una vez terminado el flujo, podréis comprobar que se han movido de forma correcta cada uno de los Document Set que se han recogido en la consulta.
Nada más, espero que os haya sido de utilidad y, como siempre os digo, espero vuestros comentarios…
Agradezco bastante la dedicación que le diste a este post, no te imaginas lo útil que me ha sido, pues me paso lo mismo con algunos usuarios. Saludos
Me gustaLe gusta a 1 persona