Eliminar historial de versiones masivo en OneDrive o SharePoint sin romper vínculos de Excel

Cuando los libros de Excel versionan sin control en OneDrive o SharePoint, el almacenamiento puede dispararse hasta bloquear el sitio y dejar flujos de Power Automate o informes de Power BI fuera de servicio. A continuación encontrarás una guía completa para borrar de forma segura miles de versiones sin perder vínculos ni interrumpir a los usuarios.

Índice

Escenario real y por qué ocurre

Un equipo de análisis financiero mantuvo un único libro de Excel para reportes diarios. La biblioteca estaba configurada con versiones ilimitadas y versiones menores. Tras dos años de trabajo intensivo y automatizaciones que actualizaban el archivo decenas de veces al día, se generaron unas 20 000 versiones, elevando el tamaño total a ≈ 400 GB. La cuota del inquilino con licencia A1 (100 GB) se vio sobrepasada, bloqueando la carga y descarga de documentos y deteniendo procesos dependientes.

El motivo es simple: cada vez que se guarda el libro, SharePoint almacena una copia completa (no incremental) junto con los metadatos. A diferencia de otras soluciones que guardan únicamente los cambios, esta característica puede multiplicar el tamaño original muy rápido cuando el archivo contiene modelos de datos o imágenes incrustadas.

Resumen rápido para impacientes

  • Existe un botón nativo Eliminar todas las versiones para cada archivo. Una vez confirmado, solo se conserva la versión actual.
  • Para varios archivos debes repetir la acción manualmente o ejecutar un script (PowerShell PnP, SPO Management Shell o Graph API).
  • Limita el número de versiones y desactiva las menores para prevenir el problema.

Procedimiento detallado para un libro individual

  1. Abre OneDrive o SharePoint en el navegador, localiza el libro y selecciónalo (un solo clic).
  2. Haz clic en el menú contextual … → Historial de versiones.
  3. Se abrirá un panel o ventana emergente con toda la lista de versiones. En la esquina superior derecha del panel, elige … → Eliminar todas las versiones.
  4. Confirma la advertencia. El proceso suele tardar segundos, independientemente de cuántas versiones existan.
  5. Una vez finalizado, solo queda la versión activa, de modo que los vínculos con Power Automate, dataflows o Power BI continúan funcionando.

Consejo: si no ves el menú emergente, maximiza la ventana o usa el enlace Administrar versiones que se muestra al final de la lista.

Automatización para múltiples libros

Cuando la biblioteca contiene decenas o cientos de archivos con miles de versiones, repetir la acción manualmente es inviable. Las opciones siguientes permiten realizar una limpieza masiva sin mover ni reemplazar los documentos.

PowerShell PnP

Necesitas el módulo PNP.PowerShell y permisos de Administrador global o Administrador de SharePoint.

# Autenticación interactiva
Connect-PnPOnline -Url https://contoso.sharepoint.com/sites/Finanzas -Interactive

Eliminar TODAS las versiones de cada archivo en la biblioteca «Documentos»

Get-PnPListItem -List "Documentos" | ForEach-Object {
Write-Host "Procesando" \$*.FieldValues\["FileLeafRef"]
Remove-PnPFileVersion -ListItem \$* -AllVersions
} 
  • Añade el parámetro -Recycle si prefieres enviar las versiones eliminadas a la Papelera de reciclaje durante 93 días.
  • Prueba primero en un entorno de desarrollo o con un subconjunto de archivos. 

SharePoint Online Management Shell

Alternativa oficial para administradores que no desean instalar PnP:

Connect-SPOService -Url https://contoso-admin.sharepoint.com
$web = Get-SPOSite https://contoso.sharepoint.com/sites/Finanzas
$list = $web.RootWeb.Lists.GetByTitle("Documentos")

Consulta incremental si solo quieres los libros de Excel

\$query = "\\\\\\xlsx\\\\\"
\$items = Get-SPOListItem -List \$list -Query \$query

foreach (\$item in \$items) {
Remove-SPOListItemVersion -ListItem \$item -AllVersions
} 

Microsoft Graph API

Cuando se requiere integrar la limpieza en un flujo CI/CD o una función de Azure, Graph API ofrece control completo a nivel de archivo:

DELETE https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/versions/{version-id}

Para eliminar todas las versiones, primero enumera /versions, recorre la colección y ejecuta la operación DELETE en cada recurso. Utiliza un token con ámbito Files.ReadWrite.All. El coste de solicitudes puede optimizarse con lotes ($batch).

Buenas prácticas para evitar el problema

Acción preventivaEfecto principalUbicación de la configuración
Limitar versiones principales (p. ej. 50)Evita crecimiento ilimitadoBiblioteca → Config. de control de versiones
Desactivar versiones menoresReduce versiones trivialesBiblioteca → Config. de control de versiones
Políticas de retención automática (M365)Purga versiones caducadasCentro de cumplimiento → Soluciones → Retención
Revisión de los flujos de automatizaciónMinimiza guardados redundantesPower Automate → Detalles del flujo
Advertencias por correo al acercarse la cuotaPreviene bloqueos inesperadosCentro de administración → Informes → Alerta de capacidad

Preguntas frecuentes

¿Cuánto tarda en liberarse el espacio?
El recálculo de almacenamiento de OneDrive/SharePoint es asíncrono; suele reflejarse en 15 min–4 h. Durante ese lapso, la biblioteca seguirá mostrando el tamaño anterior.

¿Puedo conservar solo las versiones del último mes?
Sí. Usa PowerShell o Graph API para filtrar por fecha de creación de la versión y elimina únicamente las antiguas.

¿La operación rompe las aprobaciones o metadatos?
No. Al borrar versiones, la versión actual mantiene todas las propiedades, permisos y aprobaciones. Solo desaparecen los estados anteriores.

¿Qué ocurre si un flujo de Power Automate intenta acceder a una versión eliminada?
Los flujos que operan sobre la versión actual no se ven afectados. Sin embargo, flujos históricos que dependan de un número de versión concreto fallarán y deberán actualizarse.

Comprobación de espacio liberado y plazos

Tras la eliminación masiva, verifica el uso en el Centro de administración de SharePoint → Espacio de almacenamiento. Si la cifra no cambia después de 12 h, ejecuta el cmdlet Start-SPOSiteContentMove con -Finalize, lo que fuerza un recálculo inmediato.

Impacto en flujos, Power BI y otros vínculos

El identificador del archivo (driveItemId) permanece idéntico, por lo que:

  • Los vínculos del portal, sincronización en OneDrive Sync Client y short links siguen funcionando.
  • Los conjuntos de datos de Power BI que usan la ruta o el identificador cargan sin error.
  • Los flujos de Power Automate que referencian el documento continúan accediendo a la versión vigente.

En todas las pruebas, tanto REST como MS Graph no rompieron dependencias porque el hash de la versión actual no cambia.

Política de retención y cumplimiento

Antes de purgar versiones, valida si tu organización tiene directivas de retención o eDiscovery. Las etiquetas de retención o los bloqueos de litigio prevalecen y pueden impedir la eliminación. Normalmente debes:

  1. Solicitar una exención temporal o cambiar la etiqueta en la biblioteca.
  2. Registrar la acción como parte de tu plan de gobernanza.
  3. Conservar un respaldo cifrado fuera de Microsoft 365 durante el período legal requerido.

Estrategia de respaldo antes de eliminar

La forma más sencilla es:

  • Generar un snapshot de la biblioteca con SharePoint Migration Tool o Azure Backup.
  • Almacenar el paquete en un contenedor de Azure Blob con retención inmutable (WORM) durante 30 días.
  • Documentar el hash de cada archivo para auditoría.

Conclusión

Borrar miles de versiones de Excel en OneDrive o SharePoint es completamente viable sin cortar vínculos, siempre que uses la opción nativa por archivo o una automatización basada en PowerShell/Graph. Implementa límites de versiones, desactiva las menores y define políticas de retención para evitar repetir el problema. Con estas buenas prácticas, mantendrás a raya el consumo de almacenamiento y la salud operativa de tus flujos, informes y usuarios.

Índice