Búsqueda de sitios web

SharePoint Online: Filtre la vista de lista para mostrar solo archivos de una subcarpeta usando PowerShell


Requisito: Establezca un filtro de vista de lista para mostrar archivos de una carpeta específica en una biblioteca de documentos de SharePoint Online.

¿Cómo configurar el filtro de visualización para mostrar archivos de una carpeta?

Desafortunadamente, la interfaz de usuario web de SharePoint no nos permite configurar un filtro de visualización basado en carpetas o subcarpetas. Si bien es posible configurar el filtro de vista de lista editando el código XSLT-CAML para mostrar archivos solo de una subcarpeta específica usando SharePoint Designer, esta es mi forma de PowerShell de configurar el filtro en una vista de lista de SharePoint Online.

SharePoint Online: PowerShell para crear una vista de lista filtrada por una carpeta

Este script de PowerShell crea una vista de lista que muestra todos los archivos y carpetas de una carpeta específica en la biblioteca de documentos de SharePoint Online.


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
 
#Function to Create List view in SharePoint Online
Function Create-SPOListView()
{ 
    param
    (
        [Parameter(Mandatory=$true)] [string] $SiteURL,
        [Parameter(Mandatory=$true)] [string] $ListName,
        [Parameter(Mandatory=$true)] [string] $ViewName,
        [Parameter(Mandatory=$true)] [String[]] $ViewFields,
        [Parameter(Mandatory=$true)] [string] $ViewQuery,
        [Parameter(Mandatory=$false)] [int] $ItemLimit = 30,
        [Parameter(Mandatory=$false)] [Bool] $IsDefaultView= $False
    )
 
    Try {
        #Get Credentials to connect
        $Cred= Get-Credential
 
        #Setup the context
        $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
        $Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
         
        #Get the List
        $List = $Ctx.Web.Lists.GetByTitle($ListName)
 
        #Check if the View exists in list already
        $ViewColl=$List.Views
        $Ctx.Load($ViewColl)
        $Ctx.ExecuteQuery()
        $NewView = $ViewColl | where { ($_.Title -eq $ViewName) }
        if($NewView -ne $NULL)  
        {
            Write-host "View '$ViewName' already exists in the List!" -f Yellow
        }
        else
        {
            $ViewCreationInfo = New-Object Microsoft.SharePoint.Client.ViewCreationInformation
            $ViewCreationInfo.Title = $ViewName
            $ViewCreationInfo.Query = $ViewQuery
            
            $ViewCreationInfo.RowLimit = $ItemLimit
            $ViewCreationInfo.ViewFields = $Viewfields
            $ViewCreationInfo.SetAsDefaultView = $IsDefaultView
 
            #sharepoint online powershell create view
            $NewView =$List.Views.Add($ViewCreationInfo)
            #Set the Scope
            $NewView.Scope = [Microsoft.SharePoint.Client.ViewScope]::RecursiveAll
            $NewView.Update()
            $Ctx.ExecuteQuery()    
             
            Write-host "New List View Created Successfully!" -ForegroundColor Green  
        }
    }
    Catch {
        write-host -f Red "Error:" $_.Exception.Message
    }
} 
 
#Set parameter values
$SiteURL="https://crescent.sharepoint.com/sites/marketing"
$ListName="Documents"
$ViewName="Active Documents"
$FolderRelativeURL = "/sites/marketing/Shared Documents/2018"
$ViewFields=@("DocIcon","LinkFilename","Modified","Editor") # Default Fields
$ViewQuery="<Where><Eq><FieldRef Name='FileDirRef'/><Value Type='Text'>$FolderRelativeURL</Value></Eq></Where>"
 
#Call the function to Create new View in the list
Create-SPOListView -SiteURL $SiteURL -ListName $ListName -ViewName $ViewName -ViewFields $ViewFields -ViewQuery $ViewQuery

¡Otra razón para preferir los metadatos a las carpetas!

Artículos relacionados