¿Obtiene elementos de la lista de SharePoint con la versión de historial completo?

Un usuario Pregunto ✅

Mella

Hola,

Tenemos una lista de SharePoint para administrar el inventario de activos de la flota: principalmente su atribución (quién es el propietario) y su estado (activo, perdido, roto, etc.).

Activamos el Control de versiones de SharePoint y me gustaría usar esta información para ejecutar un informe histórico sobre el estado y la propiedad de dichos activos.

En este momento, la única solución que encontré es tomar una instantánea de la lista completa de forma regular en otra fuente de datos.

¿Hay alguna forma de obtener dichos datos de historial / versión directamente evitando escribir esa fuente de datos separada?

Thansk de antemano,

Mella

mohandar

¿Cómo podemos obtener el historial de versiones completo de todos los elementos? Estoy tratando de crear un informe basado en el número de días que un artículo permaneció en un estado particular, cualquier ayuda será apreciada.

JensG

Hola

Me gusta compartir una función / consulta que ayudará a obtener los detalles de la versión a través de la API de SharePoint para un elemento de lista.

Function/Query:
let
    Source = (VersionsRelevantSharePointListName as text, VersionsRelevantSharePointLocation as text, VersionsRelevantItemID as number) => let
        Source = Xml.Tables(Web.Contents(Text.Combine({
    VersionsRelevantSharePointLocation,
    "/_api/web/Lists/getbytitle('",
    VersionsRelevantSharePointListName ,
    "')/items(",
    Text.From(VersionsRelevantItemID),
    ")/versions"}
    ))),
        entry = Source{0}[entry],
        #"Removed Other Columns2" = Table.SelectColumns(entry,{"content"}),
        #"Expanded content" = Table.ExpandTableColumn(#"Removed Other Columns2", "content", {"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"}, {"content"}),
        #"Expanded content1" = Table.ExpandTableColumn(#"Expanded content", "content", {"properties"}, {"properties"}),
        #"Expanded properties" = Table.ExpandTableColumn(#"Expanded content1", "properties", {"http://schemas.microsoft.com/ado/2007/08/dataservices"}, {"properties"})
    in
        #"Expanded properties"
in
    Source

Se requieren 3 parámetros para la función:

VersionsRelevantSharePointLocation => https: // .sharepoint.com / sites /

VersionsRelevantSharePointListName => Su nombre de lista de SharePoint

VersionsRelevantItemID => ID de elemento de lista de SharePoint

cuando invoca esta función a una lista de SharePoint, obtiene la tabla con todas las versiones relacionadas para ese elemento.
Esto se puede ampliar aún más para llegar al conjunto completo de columnas de esa lista.

Espero que esto ayude.

¡Divertirse!

NickTT

En respuesta a JensG

¡Esto es asombroso! ¡Acabo de recibir una solicitud si esto fuera posible!

Anónimo

En respuesta a JensG

¡Increíble! Me has alegrado el día. Muchas gracias. 🙂

udobausc

En respuesta a JensG

@JensG es genial que hayas publicado una función / consulta. Desafortunadamente, no me funciona. Cualquier ideal de cómo puedo arreglar eso sin demasiado esfuerzo. El error dice Expression.Error: El acceso al recurso está prohibido (traducido de mi versión: «Der Zugriff auf die Ressource ist untersagt.»). Verifiqué que haya iniciado sesión correctamente y verifiqué que no hay restricciones de permisos en la lista. Al menos no puedo ver ninguno. Supongo que la cuenta en la que he iniciado sesión en PowerBI también debe tener acceso a la lista de SharePoint o ¿hay algo más que deba considerar?

¿Estás seguro de que los enlaces de tu función siguen siendo válidos?

http://schemas.microsoft.com/ado/2007/08/dataservices/metadata
http://schemas.microsoft.com/ado/2007/08/dataservices

Aprecie, si alguien tiene una pista, ¿qué tiene de malo?

Muchas gracias

ImkeF

En respuesta a udobausc

Hola @udobausc

Tuve que agregar mi URL de SharePoint a esta lista de sitios confiables en mis Opciones de Internet para superar ese mensaje de error.

JensG

En respuesta a udobausc

Hola udobausc,

lo siento, todavía no he visto este error por mi parte.

He iniciado sesión con mis usuarios de O365 en Power BI, el mismo usuario que tiene acceso a las cosas de SP.

De todos modos, a veces Power BI solicita ingresar credenciales donde puedo seleccionar diferentes métodos. Pero siempre uso el mismo usuario.

con respecto a los enlaces antiguos, es cuando amplío algunas columnas, esto se devuelve como nombre de campo y lo acabo de mantener como proviene de la API de SP 🙂

podría valer la pena verificar si el enlace subyacente funciona en su navegador cuando reemplaza los valores en <>:

<VersionsRelevantSharePointLocation>/_api/web/Lists/getbytitle('<VersionsRelevantSharePointListName>')/items(<VersionsRelevantItemID>)/versions

divertirse

tdaskalakis

En respuesta a JensG

¿Cómo expande esta función para obtener el historial de versiones completo de todas las filas de una columna?

JensG

En respuesta a tdaskalakis

Hola tdaskalakis,

aquí hay un breve ejemplo de cómo utilizar la función:

1) Agregue una consulta a su lista donde desea ver el historial de versiones:

	let
	    Source = SharePoint.Tables("https://<yourDomain>.sharepoint.com/sites/<YourSPSite>", [ApiVersion = 15]),
	    #"Filtered Rows" = Table.SelectRows(Source, each ([Title] = "SampleList")),
	    #"Removed Other Columns" = Table.SelectColumns(#"Filtered Rows",{"Items", "Title"}),
	    #"Expanded Items" = Table.ExpandTableColumn(#"Removed Other Columns", "Items", {"Id"}, {"Items.Id"})
	in
	    #"Expanded Items"

2) Invocar la función personalizada «GetVersionHistoryFromSharePointList» (de la publicación anterior)

powerbi-1.png

powerbi-2.png

3.) después de la invocación, su tabla tendrá la versión de columna que contiene una tabla que contiene una tabla por versión del elemento.

powerbi-3.png

4) expanda la Tabla.

powerbi-4.png

5) ahora tiene todos los elementos posibles en una lista, ahora puede expandir más columnas específicas según lo necesite.
powerbi-6.png

Código de ejemplo después de esos pasos:

	let
	    Source = SharePoint.Tables("<Your SP Site Link>", [ApiVersion = 15]),
	    #"Filtered Rows" = Table.SelectRows(Source, each ([Title] = "SampleList")),
	    #"Removed Other Columns" = Table.SelectColumns(#"Filtered Rows",{"Items", "Title"}),
	    #"Expanded Items" = Table.ExpandTableColumn(#"Removed Other Columns", "Items", {"Id"}, {"Items.Id"}),
	    #"Invoked Custom Function" = Table.AddColumn(#"Expanded Items", "Versions", each GetVersionHistoryFromSharePointList([Title], "<Your SharePoint Site>", [Items.Id])),
	    #"Expanded Versions" = Table.ExpandTableColumn(#"Invoked Custom Function", "Versions", {"properties"}, {"Versions.properties"}),
	    #"Expanded Versions.properties" = Table.ExpandTableColumn(#"Expanded Versions", "Versions.properties", {"IsCurrentVersion", "VersionId", "VersionLabel", "Title", "ExampleText"}, {"Versions.properties.IsCurrentVersion", "Versions.properties.VersionId", "Versions.properties.VersionLabel", "Versions.properties.Title", "Versions.properties.ExampleText"})
	in
	    #"Expanded Versions.properties"

devhack

En respuesta a JensG

Por cierto, esto es genial, pero para mí, los errores cuando se publican en el servicio Power BI se producen en una consulta que se llama dentro de otra consulta.

demonio

En respuesta a JensG

Gran publicación, muchas gracias!

Anónimo

En respuesta a JensG

¡Increíble! Me has alegrado el día. Muchas gracias. 🙂

Anónimo

Este funcionó para mí:

https://sharepoint.stackexchange.com/questions/190021/exporting-item-list-version-history

Hombre feliz

Breve explicación:

Los «& IncludeVersions = TRUE «proporciona todos los cambios de todas las versiones (de todos los campos)

Haga una lista de Sharepoint que solo contenga las columnas que necesita. (o divídelo en varias vistas y repite este truco)

Abra el XML en Excel y allí puede crear una tabla dinámica y si incluye el campo de versión en la vista de SharePoint.

Puede ver el número de versión en el Pivot Smiley muy feliz Simplemente ordene este número de versión y verá la última y todas las versiones anteriores.

madkins420

En respuesta a Anónimo

Parece haber un límite de 30 columnas en el enfoque & IncludeVersions = TRUE

madkins420

En respuesta a Anónimo

Parece haber un límite de 30 columnas en el enfoque & IncludeVersions = TRUE

llaumans

Hola, Nick,

¿Alguna vez descubrió cómo recuperar el historial de elementos en una lista de SharePoint para poder ejecutar informes históricos sobre sus datos? ¡Me interesaría mucho saber cómo lograste hacer esto!

¡Gracias por adelantado!

Saludos cordiales,

Lucas

Mella

En respuesta a llaumans

Hola lucas

La solución actual que estoy usando actualmente ya que no tengo acceso a SharePoint DB / Framework es a través del script R:

Aquí estoy tomando una instantánea de los datos de grupo, estado, identificación y fecha de extracción en un archivo CSV local, cada vez que actualizo la fuente de datos.

No es lujoso, pero funciona por ahora.

Espero que te ayude.

Mella

Anónimo

En respuesta a Mella

Este funcionó para mí:

https://sharepoint.stackexchange.com/questions/190021/exporting-item-list-version-history

Hombre feliz

Breve explicación:

Los «& IncludeVersions = TRUE «proporciona todos los cambios de todas las versiones (de todos los campos)

Haga una lista de Sharepoint que solo contenga las columnas que necesita. (o divídelo en varias vistas y repite este truco)

Abra el XML en Excel y allí puede crear una tabla dinámica y si incluye el campo de versión en la vista de SharePoint.

Puede ver el número de versión en el Pivot Smiley muy feliz Simplemente ordene este número de versión y verá la última y todas las versiones anteriores.

@Mella


En este momento, la única solución que encontré es tomar una instantánea de la lista completa de forma regular en otra fuente de datos.

¿Hay alguna forma de obtener dichos datos de historial / versión directamente evitando escribir esa fuente de datos separada?


Primero puede exportar el historial de versiones de los elementos de la lista de SharePoint a Microsoft Excel. Luego, exporte esa tabla de Excel a su lista de SharePoint. Para que el historial de versiones y otros datos sean en el mismo fuente de datos.

export.PNG

sharepointlist.PNG

Saludos

Mella

En respuesta a v-ljerr-msft


@ v-ljerr-msft

Gracias, pero no puedo ejecutar PS scrript en este momento debido a las políticas de mi empresa.

Además, también quería evitar la multiplicidad de datos: tal vez la lista de SharePoint no sea buena para lo que estoy buscando y quizás tenga que cambiar a un modelo de base de datos real.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *