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: 

Enviar a (vista clásica)

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. 

Mover а Copiar еп
Mover a / Copiar en (vista moderna)

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. 

Desencadenar un flujo manualmente 
RUN FLOW 
STATUS ID 
+ Agregar una entrada 
¿Ejecutar el flujo? Seleccione Sí o No. 
Escribir entrada
Desencadenador

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: 

{x} 
Inicializar variable AL TRO 
o 
Nombre 
Tipo 
Valor 
strFlLTRO ST 
Cadena 
ContentTypeId eq 
Ox0120D5200041CID8A4F347614g8E816213070063DAOODFC93A4625CE8E 
STATUS ID x 
4597523C16A3E88625' and ITSPrintingStatusId eq 
and ITSPnntingType eq 'TRANSACCIONAL' and ITSDate gt datetime'2020-OI - 
OIT03BO:OO.OOO'
Variable para la cadena del filtro

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

Inicializar variable 
* Nombre 
* Tipo 
Valor 
strFOLDER 
Cadena 
Escriba el valor inicial.
Variable para guardar los nombres de las carpetas

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. 

Obtener archivos (solo propiedades) 
* Dirección del sitio 
* Nombre de la 
biblioteca 
Consulta de filtro 
Ordenar por 
Primeros puestos 
Limitar las columnas 
según la vista 
Comercial 
Pedidos 
strFlLTRO_ST x 
sharepoint.com/sites/ITS/com V 
2019 
Consulta order3y de OData para especificar el orden de las entradas. 
Número total de entradas que se recuperarán (valor predeterminado = todo) 
Para evitar problemas con el umbral de las columnas, permite usar únic V 
Ocultar opciones avanzadas A
Obtención de archivos con filtro oData

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: 

  1. 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.  
  1. 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. 
  1. 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.  
Aplicar cada uno 
Seleccionar una 
salida de los pasos 
En caso positivo 
Mover carpeta 
Ag 
Dirección del sitio 
actual 
Carpeta que se va a 
Dirección del sitio de 
destino 
Carpeta de destino 
Siya existe otra 
carpeta 
value x 
Comercial 
Identificador 
Comercial 
/lTSPrintingReqs2020 
FSI thrs action 
Establecer variable 
Nom bre 
Valor 
Condición 
RUN FLO.. 
+ Agregar 
strFOLDER 
Nombre de arz... 
es igual a 
true x 
En casa negativa 
regar una acción 
.sharepcirt.ccm/sites/ITS.com 
sharepcirt.ccm/sites/ITS.com
Bucle

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. 

Tercer Document Set
Nombre del tercer Document Set que se va a mover

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…

Un comentario sobre “Cómo mover Documents Sets en SharePoint Online de una biblioteca a otra

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s