SharePoint Online: Sao chép các cột từ danh sách này sang danh sách khác bằng PowerShell
Yêu cầu: Sao chép cột sang danh sách khác trong SharePoint Online.
Làm cách nào để sao chép các cột giữa các danh sách trong SharePoint Online?
Bạn đã bao giờ muốn sao chép một cột từ danh sách SharePoint này sang danh sách khác chưa? Có thể bạn muốn sử dụng cùng một cột trong nhiều danh sách, bạn muốn sao chép dữ liệu từ danh sách này sang danh sách khác hoặc bạn muốn di chuyển dữ liệu từ danh sách này sang danh sách khác. Dù lý do là gì thì đây là những phương pháp bạn có thể sử dụng:
Sao chép các cột trong giao diện người dùng web bằng cách tạo lại từng cột một:
- Đăng nhập vào trang SharePoint Online của bạn >> Đi tới danh sách mà bạn muốn sao chép cột từ đó.
- Nhấp vào biểu tượng bánh răng cài đặt ở góc trên bên phải, sau đó chọn “Cài đặt danh sách”.
- Trong trang cài đặt danh sách, trong “Cột”, tìm cột bạn muốn sao chép, sau đó nhấp vào tên cột để mở thuộc tính của cột.
- Duyệt đến danh sách đích của bạn trong trình duyệt trong tab mới. Truy cập cài đặt của nó và nhấp vào “Tạo cột” trên trang cài đặt.
Bắt đầu sao chép cài đặt cột từ nguồn đến đích: Ví dụ: Tên cột, mô tả và các cài đặt khác. Nhấn OK để tạo cột cuối cùng.
- Lặp lại các bước 3-5 cho mỗi cột bổ sung mà bạn muốn sao chép.
PowerShell để sao chép các cột từ danh sách này sang danh sách khác
Việc sử dụng giao diện người dùng web để tạo lại các cột có thể phức tạp nếu bạn có nhiều cột cần sao chép; May mắn thay, thật dễ dàng thực hiện điều đó với tập lệnh PowerShell!
#Parameters
$SourceSiteUrl = "https://crescent.sharepoint.com/sites/Retail"
$DestinationSiteUrl = "https://crescent.sharepoint.com/sites/Sales"
$SourceListName = "Projects"
$DestinationListName = "Projects"
$FieldsToCopy = "ProjectName", "ProjectDescription", "ProjectManager", "Department" #Internal Names
#Connect to the Source site
Connect-PnPOnline -Url $SourceSiteUrl -Interactive
#Get All Fields from the Source List
$SourceListFields = Get-PnPField -List $SourceListName
#Connect to Destination site
Connect-PnPOnline -Url $DestinationSiteUrl -Interactive
#Get All Fields from the Desntination List
$DestinationListFields = Get-PnPField -List $DestinationListName
#Copy columns from the Source List to Destination List
ForEach($Field in $FieldsToCopy)
{
#Check if the destination list has the field already
$DestinationFieldExist = ($DestinationListFields | Select -ExpandProperty InternalName).Contains($Field)
If($DestinationFieldExist -eq $false)
{
#Get the field to copy
$SourceField = $SourceListFields | Where {$_.InternalName -eq $Field}
If($SourceField -ne $Null)
{
Add-PnPFieldFromXml -List $DestinationListName -FieldXml $SourceField.SchemaXml | Out-Null
Write-Host "Copied Field from Source to Destination List:"$Field -f Green
}
Else
{
Write-Host "Field '$Field' does not Exist in the Source List!" -f Yellow
}
}
Else
{
Write-host "Field '$Field' Already Exists in the Destination List!" -f Yellow
}
}
Làm cách nào để sao chép tất cả các trường ngoại trừ Chỉ đọc, Ẩn và một số trường đặc biệt? Chắc chắn! Sử dụng:
$FieldsToCopy = Get-PnPField -List $SourceListName | Where {-not ($_.ReadOnlyField) -and (-Not ($_.Hidden)) -and ($_.InternalName -ne "ContentType") -and ($_.InternalName -ne "Attachments") } | Select -ExpandProperty InternalName
Xin lưu ý rằng các phương pháp trên chỉ sao chép các cột từ danh sách này sang danh sách khác. Nếu bạn cũng muốn sao chép các giá trị cột danh sách SharePoint, hãy sử dụng: Làm cách nào để sao chép dữ liệu từ cột này sang cột khác trong danh sách SharePoint Online?
