当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] SharePoint Online:将文件夹转换为元数据

作者:精品下载站 日期:2024-12-14 21:32:07 浏览:14 分类:玩电脑

SharePoint Online:将文件夹转换为元数据


要求:将文件夹结构转换为 SharePoint Online 库中的元数据。

如何在 SharePoint Online 中将文件夹结构转换为元数据?

我们希望通过用元数据替换文件夹结构来充分利用 SharePoint 的潜力。就我而言,我有一个名为“迁移”的文档库,并为该库中的每个项目创建了文件夹。所以,我想要的只是:将文件夹更改为元数据,以便我可以使用此元数据进行排序/过滤/搜索等。

[玩转系统] SharePoint Online:将文件夹转换为元数据

展平文件夹的手动过程如下:

  1. 在库中添加一个选项列,并将其选项设置为库中的文件夹名称。
  2. 使用文件夹标记每个文件(您可以创建新视图或更改现有视图以显示不带文件夹的文件,并在“快速编辑”中编辑文件)。
  3. 使用文件资源管理器将文件夹外部的文件移至文档库的根目录。
  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
}

您可以按特定元数据列进行分组,以便更轻松地查找该类型的所有文件。请注意,如果您的库或文件夹包含超过 5000 个文件 - 您可能会遇到某种副作用。这是脚本结果:

[玩转系统] SharePoint Online:将文件夹转换为元数据

包起来

总之,在 SharePoint Online 中将文件夹转换为元数据可能是组织和管理组织内内容的有用方法。通过使用元数据,您可以将自定义字段添加到文件夹并使用它们对内容进行分类和过滤,从而更轻松地查找和使用所需的信息。总体而言,使用元数据可以帮助您更好地管理内容,并使其对您的团队更易于访问和有用。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯