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

SharePoint Online: แปลงโฟลเดอร์เป็นข้อมูลเมตา


ความต้องการ: แปลงโครงสร้างโฟลเดอร์เป็นข้อมูลเมตาในไลบรารี SharePoint Online

วิธีแปลงโครงสร้างโฟลเดอร์เป็นข้อมูลเมตาใน SharePoint Online

เราต้องการใช้ศักยภาพสูงสุดของ SharePoint โดยการแทนที่โครงสร้างโฟลเดอร์ด้วยข้อมูลเมตา ในกรณีของฉัน ฉันมีไลบรารีเอกสารชื่อ “Migration” และโฟลเดอร์ถูกสร้างขึ้นสำหรับแต่ละโปรเจ็กต์ในไลบรารีนี้ ดังนั้น สิ่งที่ฉันต้องการก็คือ เปลี่ยนโฟลเดอร์เป็นข้อมูลเมตา เพื่อที่ฉันจะได้ใช้ข้อมูลเมตานี้เพื่อเรียงลำดับ/กรอง/ค้นหา ฯลฯ

ขั้นตอนแบบแมนนวลในการทำให้โฟลเดอร์เรียบขึ้นมีลักษณะดังนี้:

  1. เพิ่มคอลัมน์ตัวเลือกในไลบรารีและตั้งค่าตัวเลือกเป็นชื่อโฟลเดอร์ในไลบรารี
  2. แท็กแต่ละไฟล์ด้วยโฟลเดอร์ (คุณสามารถสร้างมุมมองใหม่หรือเปลี่ยนที่มีอยู่เพื่อแสดงไฟล์ที่ไม่มีโฟลเดอร์และแก้ไขไฟล์ใน "แก้ไขด่วน")
  3. ย้ายไฟล์ไปนอกโฟลเดอร์ไปที่รูทของไลบรารีเอกสารโดยใช้ File Explorer
  4. ลบโฟลเดอร์ออกจากไลบรารี

แปลงโฟลเดอร์เป็นข้อมูลเมตาโดยใช้ PowerShell

มาทำตามขั้นตอนข้างต้นโดยอัตโนมัติโดยใช้ PowerShell!

โปรดใช้ความระมัดระวังและทำการทดสอบก่อนที่จะเรียกใช้สคริปต์นี้ ในกรณีของฉัน ไฟล์ถูกวางไว้ลึกเพียงหนึ่งระดับโฟลเดอร์โดยไม่มีโฟลเดอร์ย่อยเพิ่มเติม - ตรวจสอบให้แน่ใจว่าคุณมีโครงสร้างที่คล้ายกัน มิฉะนั้น คุณจะต้องแก้ไขสคริปต์ตามโครงสร้างโฟลเดอร์ของคุณ นอกจากนี้ หากคุณมีชื่อไฟล์เดียวกันในสองโฟลเดอร์ - มีโอกาสเกิดข้อขัดแย้ง หากเป็นเช่นนั้น คุณอาจต้องเปลี่ยนชื่อไฟล์ในโฟลเดอร์โดยเพิ่มชื่อโฟลเดอร์ต่อท้าย


#Parameters
$SiteURL= "https://crescent.sharepoint.com/sites/pmo"
$ListName = "Migration"
$MetadataColumnName = "Project"

#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive

#Get All Items from the List
$List =  Get-PnPList -Identity $ListName
$RootFolderURL = $List.RootFolder.ServerRelativeUrl
$ListItems = Get-PnPListItem -List $ListName -PageSize 500
$Files = $ListItems | Where {$_.FileSystemObjectType -eq "File"}
$Folders = $ListItems | Where {$_.FileSystemObjectType -eq "Folder" -and $_.FieldValues.FileDirRef -eq $RootFolderURL}
$FolderNames = @($Folders | ForEach-Object { $_.FieldValues.FileLeafRef})

#Get the column from list
$Field = Get-PnPField -Identity $MetadataColumnName -List $ListName -ErrorAction SilentlyContinue
If($Field -eq $Null)
{    
    #Create the Coice Metadata Column
    Add-PnPField -List $ListName -DisplayName $MetadataColumnName -InternalName $MetadataColumnName -Type Choice -AddToDefaultView -Choices $FolderNames | Out-Null
}

#Loop through Each Folder and Update Metadata for Each File in the Folder
ForEach($Folder in $Folders)
{
    #Get All Files from the Folder
    $FolderFiles =  $Files | Where {$_.FieldValues.FileDirRef -Eq $Folder.FieldValues.FileRef}
    ForEach ($File in $FolderFiles)
    {
        #Get the File from List Item
        Set-PnPListItem -List $ListName -Identity $File.Id -Values @{$MetadataColumnName = $Folder.FieldValues.FileLeafRef } | Out-Null
        Write-host -f Yellow "Updated Metadata for File:"$File.FieldValues["FileRef"]

        #Move the File to Root Folder
        Move-PnPFile -SourceUrl $File.FieldValues.FileRef -TargetUrl "$RootFolderURL/$($File.FieldValues.FileLeafRef)" -Force
    }

    #Remove the folder
    Remove-PnPListItem -List $ListName -Identity $Folder.Id -Recycle -force
}

คุณสามารถจัดกลุ่มตามคอลัมน์ข้อมูลเมตาเฉพาะเพื่อให้ค้นหาไฟล์ทั้งหมดประเภทนั้นได้ง่ายขึ้น โปรดทราบว่าหากไลบรารีหรือโฟลเดอร์ของคุณมีไฟล์มากกว่า 5,000 ไฟล์ คุณอาจพบผลข้างเคียงบางประการ นี่คือผลลัพธ์ของสคริปต์:

ห่อ

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

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