Copy SharePoint online webpart settings from one webpart to other

Here is the simple PowerShell script which does the magic to copy the webpart configurations from one webpart to other.

All you have to do is

  • Identify the source and target webpart. Here in below script we have two different pages source.aspx and target.aspx
  • In the source.aspx OOTB hero webpart added on the page.
  • On the target.aspx another OOTB hero webpart also added on the page
  • The script copies the setting of source.aspx hero webpart to target.aspx hero webpart
  • Let’s assume if you change any image on the source.aspx hero webpart and apply the same settings on the target.aspx hero webpart. This script is much useful when you run.
  • The important thing is to note is to convert the retrieved json format to object here is the line $convertedJson = ConvertFrom-Json $sourceWebpartData this is already included in the below script. This is important because when we retrieve the webpart properties json. The format is not json aligned. So we are converting it to json object.
#################################################################################################
#Set Webpart Properties using PnP
#################################################################################################
Connect-PnPOnline -url https://fivenumber.sharepoint.com/sites/spdev/ -UseWebLogin

$sourcePageName="source.aspx"
$targetpageName1="target.aspx"

$sourceWebpartTitle="Hero" # Your webpart name

$sourcePageInstance= Get-PnPClientSidePage -Identity $sourcePageName
$sourceWebpartInstance = $sourcePageInstance.Controls | ?{$_.Title -eq $sourceWebpartTitle}
$sourceWebpartData = $sourceWebpartInstance.PropertiesJson | ConvertTo-Json

#Write-Host($sourceWebpartData)
$convertedJson = ConvertFrom-Json $sourceWebpartData

Set-PnPPageWebPart -Page $targetpageName1 -Identity <your-target-webpart-id-goes here> -PropertiesJson $convertedJson