I created a calendar in Sharepoint. It uses the old sharepoint apps. I've populated it with 100+ events.

How can I copy all of those events from this Sharepoint calendar to another blank Sharepoint calendar?

2 Answers 2


Because the second calendar list is still blank, so you can use the Save list as a template option to save your list structure with its contents.

  • Open your list > List setting
  • Click on "Save list as Template" and check Include Content

enter image description here

  • Then use this template to create your new calendar list.

See Also


Besides using list template, you can also use PowerShell/PnP PowerShell to copy events to the new list, but it will need a bit of configuration ahead.

See a sample script here:

#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 Copy-ListItems() {
        [Parameter(Mandatory=$true)] [string] $SiteURL,
        [Parameter(Mandatory=$true)] [string] $SourceListName,
        [Parameter(Mandatory=$true)] [string] $TargetListName
    Try {
        #Setup Credentials to connect
        $Cred = Get-Credential
        $Cred = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)
        #Setup the context
        $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
        $Ctx.Credentials = $Cred
        #Get the Source List and Target Lists
        $SourceList = $Ctx.Web.Lists.GetByTitle($SourceListName)
        $TargetList = $Ctx.Web.Lists.GetByTitle($TargetListName)
        #Get All Items from Source List
        $SourceListItems = $SourceList.GetItems([Microsoft.SharePoint.Client.CamlQuery]::CreateAllItemsQuery())
        #Get All fields from Source List & Target List
        $SourceListFields = $SourceList.Fields
        $TargetListFields = $TargetList.Fields
        #Get each column value from source list and add them to target
        ForEach($SourceItem in $SourceListItems) {
            $NewItem =New-Object Microsoft.SharePoint.Client.ListItemCreationInformation
            $ListItem = $TargetList.AddItem($NewItem)       
            #Map each field from source list to target list
            Foreach($SourceField in $SourceListFields) { 
                #Skip Read only, hidden fields, content type and attachments
                If((-Not ($SourceField.ReadOnlyField)) -and (-Not ($SourceField.Hidden)) -and ($SourceField.InternalName -ne  "ContentType") -and ($SourceField.InternalName -ne  "Attachments") ) {
                    $TargetField = $TargetListFields | where { $_.Internalname -eq $SourceField.Internalname}
                    if($TargetField -ne $null)
                        #Copy column value from source to target
                        $ListItem[$TargetField.InternalName] = $SourceItem[$SourceField.InternalName] 
        write-host  -f Green "Total List Items Copied from '$SourceListName' to '$TargetListName' : $($SourceListItems.count)"
    Catch {
        write-host -f Red "Error Copying List Items!" $_.Exception.Message
#Set Parameters
$SiteURL = "<SiteURL>"
$SourceListName = "<SourceList>"
$TargetListName = "<TargetList>"
#Call the function to copy list items
Copy-ListItems -siteURL $SiteURL -SourceListName $SourceListName -TargetListName $TargetListName

Reference: SharePoint Online: Copy List Items from One List to Another using PowerShell.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.