Wednesday, September 30, 2020

Copy all views from one SharePoint list to another via Powershell

 Here's a PnP Powershell script that copies all views from one SharePoint list to another list:


# Url to the site
$siteUrl = "https://vivity.sharepoint.com"

# The list where we want to copy all of the views
$listWithViewsToCopy = "Banana"

# The list name to copy the views to
$listToCopyTo = "Pineapple"

Write-Host "Connecting to PnP..."
Connect-PnPOnline -Url $siteUrl -Credential (Get-credential)

# Get all the views and properties for the list
$viewsToCopy = Get-PnPView -List $listWithViewsToCopy -Includes "ViewQuery","ViewType","ViewData","ViewJoins","ViewProjectedFields","RowLimit","Paged"

# Loop through each view and create it in the new list
foreach ($view in $viewsToCopy)
{
   Write-Host "Adding View: "$view.Title
   # Loop through all fields and create an array

   $fields = [System.Collections.ArrayList]::new()

   foreach ($field in $view.ViewFields)
   {
      [void]$fields.Add($field)
   }

   # Add the new view
   Add-PnPView -List $listToCopyTo -Title $view.Title -Fields $fields -Query $view.ViewQuery -ViewType $view.ViewType -RowLimit $view.RowLimit
}

Thursday, June 11, 2020

Grant access to an item or folder: Add a SharePoint Group

In Power Automate, if trying to grant access to an item or a folder, and you try to use a SharePoint Group, it won't resolve and you'll get an error that the field is required.


But if you just Initialize a variable and assign it the name of the SharePoint Group:

And then use that variable instead:


You no longer get an error, and the group will get added with the access level specified when you run the flow!




Monday, June 8, 2020

Get-PnPListItem in a list with greater than 5000 items

If you need to grab all the items from a list with greater than 5000 items in SharePoint Online, you might get the following error:

The attempted operation is prohibited because it exceeds the list view threshold enforced by the administrator

To get around that, add a query with the scope of RecursiveAll to your query like so:

Connect-PnpOnline -Url 'https://vivity.sharepoint.com/sites/sitename' -Credentials (Get-Credential)
$query = "<View Scope='RecursiveAll'><RowLimit>5000</RowLimit></View>"
$items = Get-PnPListItem -List 'My List' -Query $query