ค้นหาเว็บไซต์

คัดลอกค่าคอลัมน์ระหว่างรายการใน SharePoint Online


ความต้องการ: คัดลอกข้อมูลจากคอลัมน์รายการหนึ่งไปยังอีกคอลัมน์หนึ่งใน SharePoint Online

จะคัดลอกค่าของคอลัมน์จากรายการหนึ่งไปยังอีกรายการได้อย่างไร?

นี่คือสคริปต์ PowerShell เพื่อคัดลอกค่าคอลัมน์ระหว่างรายการ:


#Parameters
$SourceSiteUrl = "https://crescent.sharepoint.com/sites/Retail"  
$DestinationSiteUrl = "https://crescent.sharepoint.com/sites/Sales"
$SourceListName = "Projects"
$DestinationListName = "ProjectsV2"
$FieldsToCopy = "ProjectName", "ProjectDescription", "ProjectManager", "Date", "Department"

#Connect to Source site
Connect-PnPOnline -Url $SourceSiteUrl -Interactive
 
#Get All Items from the Source List
$SourceListItems = Get-PnPListItem -List $SourceListName -Fields $FieldsToCopy -PageSize 2000

#Connect to Destination site
Connect-PnPOnline -Url $DestinationSiteUrl -Interactive

#Copy Items from the Source to Destination
[int]$Counter = 1
ForEach($ListItem in $SourceListItems)
{
    $ItemValue = @{}
    ForEach($Field in $FieldsToCopy)
    {
        #Check if the Field value is not Null
        If($ListItem[$Field] -ne $Null)
        {
            #Handle Special Fields
            $FieldType  = (Get-PnPField -List $SourceListName -Identity $Field).TypeAsString
  
            If($FieldType -eq "User" -or $FieldType -eq "UserMulti" -or $FieldType -eq "Lookup" -or $FieldType -eq "LookupMulti") #People Picker or Lookup Field
            {
                $LookupIDs = $ListItem[$Field] | ForEach-Object { $_.LookupID.ToString()}
                $ItemValue.add($Field,$LookupIDs)
            }
            ElseIf($FieldType -eq "URL") #Hyperlink
            {
                $URL = $ListItem[$Field].URL
                $Description  = $ListItem[$Field].Description
                $ItemValue.add($Field,"$URL, $Description")
            }
            ElseIf($FieldType -eq "TaxonomyFieldType" -or $FieldType -eq "TaxonomyFieldTypeMulti") #MMS
            {
                $TermGUIDs = $ListItem[$Field] | ForEach-Object { $_.TermGuid.ToString()}                    
                $ItemValue.add($Field,$TermGUIDs)
            }
            Else
            {
                #Get Source Field Value and add to Hashtable
                $ItemValue.add($Field,$ListItem[$Field])
            }
        }
    }
    Write-Progress -Activity "Copying List Items:" -Status "Copying Item ID '$($ListItem.Id)' from Source List ($($Counter) of $($SourceListItems.count))" -PercentComplete (($Counter / $SourceListItems.count) * 100)
 
    #Copy column value from source to target
    Add-PnPListItem -List $DestinationListName -Values $ItemValue | Out-Null
  
    Write-Host "Copied Values from Source to Target Column of Item '$($ListItem.Id)' ($($Counter) of $($SourceListItems.count)) "
    $Counter++
}

ตรวจสอบให้แน่ใจว่ารายการปลายทางมีฟิลด์ที่คล้ายกัน (ชื่อภายในฟิลด์ การตั้งค่าฟิลด์ ฯลฯ) เป็นรายการแหล่งที่มา ก่อนที่จะรันสคริปต์นี้ คุณสามารถใช้สคริปต์ PowerShell นี้เพื่อคัดลอกคอลัมน์ระหว่างรายการ: วิธีคัดลอกคอลัมน์จากรายการหนึ่งไปยังอีกรายการหนึ่งใน SharePoint Online

บทความที่เกี่ยวข้อง