PowerQuery – Mostrar Content Type Items usando la busqueda de SharePoint

Para obtener items usando la busqueda de SharePoint y posteriormente mostrar una tabla de resultados debemos seguir dos pasos: Hacer la query y procesar los resultados.

Para realizar la query podéis utilizar una funcion explicada en este post:

http://www.idttechblog.com/powerquery-crear-query-para-usar-la-busqueda-de-sharepoint-con-rest-api/

Una vez creada la función para hacer la query, debemos obtener los resultados y procesar los datos siguiendo estos pasos (Cada paso se traduce en un nuevo Step dentro de la Query en Excel). Debemos tener en cuenta que el nombre de la Query que hemos creado es “QueryData“, que utilizaremos en el primer paso a continuación.

[Nota: El nombre del Step es el que utilizamos en el siguiente paso para referenciar al resultado del mismo. Comprobad como los nombres corresponden en cada formula con el nombre del paso anterior (diferenciado por colores).]

Obtener los resultados

Step: Source

= QueryData(“contenttype:MyContentTypeName”, “Title,CUSTOM_FIELD1,CUSTOMFIELD2”, “https://mytenant.sharepoint.com/sites/mySite”)

Transformar las celdas

Step: AllRows

= List.Transform(Source, each _[Cells])

Transformar las filas en tablas

Step: RowsToTables

= List.Transform(AllRows, each List.Transform(_, each Record.ToTable(_)))

Cambiar la estructura de tabla a lista

Step: SkelToList

= List.Transform(RowsToTables, each Table.FromList(_, Splitter.SplitByNothing(), null, null, ExtraValues.Error))

Limpiar las filas

Step: CleanRows

= List.Transform(SkelToList, each List.Transform(_[Column1], each Table.PromoteHeaders(Table.RemoveLastN( Table.RemoveColumns( _,{“Name”}), 1)  )  )  )

Transponer la tabla

Step: TransposeTable

= Table.FromRows(List.Transform(CleanRows, each List.Transform(_, each Record.FieldValues(_{0}){0} )))

Obtener los nombres de las columnas

Step: ColumnRenames

= List.Transform(CleanRows{0}, each { “Column” & Text.From( List.PositionOf(CleanRows{0}, _) + 1), Table.ColumnNames(_){0}})

Renombrar las columnas de la tabla

Step: RenamedTable

= Table.RenameColumns(TransposeTable, ColumnRenames)

 

A partir de este punto podemos incluir todos los pasos manuales que necesitemos tales como ocultar columnas, fromatear fechas, dividir campos…

También podéis encontrar un ejemplo completo en Making Thiungs Work en GitHub. El ejemplo contempla un escenario donde los resultados exceden el limite de 500 items que la llamada REST puede obtener,, y realiza una iteración para obtenerlos todos: https://github.com/MakingThingsWorkToronto/SharePointSearchPowerQuery

One Response

Leave a Reply

Your email address will not be published. Required fields are marked *