viernes, 15 de julio de 2016

Como operar sobre un conjunto de items/ficheros filtrados con PowerShell

Últimamente estoy usando mucho más PowerShell que en el resto de mi vida profesional con SharePoint. Así que voy a empezar a escribir algunos de los scripts que siempre van bien tener a mano.

Uno de los usos que, personalmente más le suelo dar a PowerShell es la interacción sobre un grupo de elementos de una lista o biblioteca (por ejemplo, asignar un determinado permiso de seguridad a un grupo de ficheros que comparten una característica común (metadatos)).

Pero, ¿Cuál sería el script básico para obtener un grupo de elementos de una biblioteca/lista de SharePoint?

A continuación os dejo un código de ejemplo:

$webUrl = "La URL de tu site aquí"
$ListName = "El nombre de tu lista aquí"
$web = Get-SPWeb $webUrl
$list = $web.Lists[$ListName]
$items= $list.Items | where {($_['NombreCampo1'] -eq 'ValorDeseado1') -and ($_['NombreCampo2'] -eq 'ValorDeseado2') -and (($_['NombreCampo3'] -eq 'ValorDeseado3')-or ($_['NombreCampo3'] -eq 'ValorDeseado4'))}
foreach ($item in $items) {
    Write-Host ("-Realizando acciones para el ítem " + $item.ID) -ForegroundColor Yellow
}

A partir de aquí cada cual hará lo que tenga que hacer sobre cada uno de los elementos retornados. En el ejemplo tan solo escribe un mensaje con el ID del ítem en la consola, aunque en otros post compartiré cómo realizar algunas operaciones interesantes con esta base.

He puesto un ejemplo que utiliza un filtro donde contiene algún AND (-and), OR (-or) y EQUALS (-eq), para que se vea más o menos una sentencia con diversos valores, pero cada uno debería adecuar el filtro a sus propias necesidades, añadiendo o eliminando condicionantes.

Nada más por hoy, aunque en post posteriores voy a profundizar en el tema.

¡Un saludo!

viernes, 1 de julio de 2016

Cómo situar el menú de puntos suspensivos sobre otra columna en una lista/biblioteca

Recientemente me han solicitado cambiar la columna que contiene el menú de puntos suspensivos en una lista de SharePoint. Para ser honestos, al principio dudé que esto fuera posible (tan acostumbrados como estamos a la columna "Title" o "Name" en caso de bibliotecas), pero finalmente encontré una forma realmente sencilla de conseguir el resultado deseado.

Para cambiar el menú de opciones sobre un elemento a otra columna de la lista o biblioteca, tendremos que abrir nuestro "querido" SharePoint Designer sobre el sitio en cuestión. Entonces vamos a la lista que queremos modificar, y seleccionamos la vista de la lista a retocar.


En la pantalla de edición de la vista, veremos una línea bajo el <XmlDefinition> que empieza más o menos así (con el GUID distinto en cada caso, por supuesto)

<View Name="{85B6C86B-A760-4B9F-9A29-09901B043AB3}" DefaultView="TRUE" MobileView="TRUE"...

Si hacemos scroll lateral sobre esta línea, veremos que están listados en ella todos los campos que aparecen en la vista.

Para añadir el menú de puntos suspensivos sobre uno de esos campos, tan solo tendremos que añadir el par nombre=valor siguiente al lado del nombre de la columna: ListItemMenu='TRUE'


En el momento que guardemos nuestra modificación, ya estará operativa en nuestra vista. Como veréis en la siguiente captura de pantalla, el menú de puntos suspensivos está a la derecha de la columna "IDNumber", no bajo "Title", como suele ser lo habitual.


Y como extra, un par de trucos antes de finalizar:
  1. Si en lugar de ListItemMenu="TRUE" utilizáis CalloutMenu="TRUE" También tendréis el "document preview" en la columna elegida.
  2. Si, además añadís linkToItem="TRUE", la columna enlazará directamente con el documento (como lo hace por defecto la columna "Nombre").

¡Eso es todo por hoy!

¡Un saludo!