Forum Discussion
SharePoint Online - Copy site pages between site collections - is that possible?
Hello everyone,
I have been asked to move some site pages from a Microsoft Team to another Team. In the modern look of SharePoint Online I can select the page (example1.aspx) and when clicking on the three dots I am given the option "Copy to". As you probably know, the page can be copied only on the same site/Team.
When I switch to the "classic" look/mode, I am given the option "Copy" and I can type a destination document library or folder (see the screenshot below), but when I try to copy that to another site, I always get an error (refuse to connect).
I know that there's a https://sharepoint.uservoice.com/forums/329214-sites-and-collaboration/suggestions/35035618-add-the-ability-to-copy-a-modern-site-page-from-on asking specifically for this feature, but I would like to know if there is some workaround we can try in the meantime, like free migration tools or some scripts via PowerShell.
Thank you in advance for your help!
Francesco
7 Replies
- Sheldon-FariaCopper Contributor
fstorer Hi, for anyone looking for a solution this might help:
Import-Module SharePointPnPPowerShellOnline #Source and Target Sites $tenant = "tenant"; $SourceUrl="https://$tenant.sharepoint.com/sites/sourceSite" $targetRelativeLibraryUrl="/sites/marketing/SitePages" #SPO Connection $AdminPassword=Read-Host -Prompt "Password" -AsSecureString $adminUPN = "admin@australia.com.au" $Credentials = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $adminUPN, $AdminPassword Connect-PnPOnline -Url $SourceUrl -Credentials $cred #Connect-PnPOnline -Url $SourceUrl -UseWebLogin $ServerRelativeUrl=(Get-PnPWeb).ServerRelativeUrl #Get all source pages $pages = Get-PnPListItem -List sitepages Foreach($page in $pages){ $pageName = $page.FieldValues["FileLeafRef"] #if($pageName -like "Migrated*"){ #OPTIONAL FILTER #Write-Host $pageName $file = Get-PnPFile -Url "$ServerRelativeUrl/sitePages/$pageName" $fileServerRelativeUrl = Get-PnPProperty -ClientObject $file -Property "ServerRelativeUrl" #Start the move Move-PnPFile -ServerRelativeUrl $fileServerRelativeUrl -TargetServerRelativeLibrary $targetRelativeLibraryUrl -Force -AllowSchemaMismatch -AllowSmallerVersionLimitOnDestination #} }- JORGE_CORREA_MUOZCopper ContributorThanks a lot, Do you can tell me, how I can create a log file for this process?
- pgawde_800Copper Contributor
- David2FelixCopper Contributor
pgawde_800 I solved using PNP-PoweShell, afterwards I only had to upload the images to the Image WebParts.
try{
$srcSiteURL = "https://xxxxx.sharepoint.com/sites/xxxxx/"
$destSiteURL = "https://xxxxx.sharepoint.com/sites/yyyyy/"
$pageName = "test.aspx"
Connect-PnPOnline -Url $srcSiteURL -Credentials SharepointCredential
$tempFile = [System.IO.Path]::GetTempFileName();
Export-PnPClientSidePage -Force -Identity $pageName -Out $tempFile
Connect-PnPOnline -Url $destSiteURL -Credentials SharepointCredential
Apply-PnPProvisioningTemplate -Path $tempFile
Write-Host "Success"
}
catch{
Write-Host -ForegroundColor Red 'Error ',':'$Error[0].ToString();
}