如何删除列表中的所有项目?

问题描述 投票:0回答:11

如何删除 Sharepoint 列表中的所有项目?

我必须删除我的列表并重新创建它...任何人都可以帮助我解决这个问题吗?

sharepoint
11个回答
23
投票

如果您的列表超过 500 个项目,并且您不想选择编码路径,也不想删除列表,那么您可以转到“管理内容和结构”视图,它允许您查看一次 1000 个项目,然后选择全部删除全部。


3
投票

您可以将 Microsoft Access 连接到 SharePoint 并运行 SQL 命令来删除所有记录或使用 WHERE 条件。更多信息请访问:http://office.microsoft.com/en-ca/access-help/import-from-or-link-data-to-a-sharepoint-list-HA102749600.aspx.


3
投票

您可以在数据表视图中一次删除所有项目(Ctrl+A > 右键单击该行 > 删除行)。


2
投票

转到“网站设置”,然后查找“内容和结构”,然后单击,然后在右上角打开后查找列表,在显示项目中选择 1000 个,现在您可以一次轻松删除 1000 个项目。由于 SharePoint 不允许从直接列表视图中删除超过 100 个。

站点设置 => 内容和结构 => 选择您的列表 => 选择显示 1000 => 删除


2
投票

来自 @Lukas Nespor 的答案,您只需安装并导入正确的模块即可。

这是代码:

# Import the module from Sharepoint Online
Import-Module SharePointPnPPowerShellOnline

$cc = New-Object Microsoft.SharePoint.Client.ClientContext("Your website")
$cc.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials("Your Email", (ConvertTo-SecureString "Your Password" -AsPlainText -Force))

$list = $cc.Web.Lists.GetByTitle("Your list name")
$query = New-Object Microsoft.SharePoint.Client.CamlQuery
$query.ViewXml = "<View><RowLimit>200</RowLimit></View>"

do
{
    $started = Get-Date
    $items = $list.GetItems($query)
    $cc.Load($items)
    $cc.ExecuteQuery()

    if ($items.Count -eq 0) { break }

    for ($i = 0; $i -lt $items.Count; $i++)
    {
        # Delete row 
        # Because DeleteObject() effectively change the collection the index 0 is not a mistake
        $items[0].DeleteObject()
    }

    $cc.ExecuteQuery()
    Write-Host "Time elapsed: $((Get-Date) - $started)"
} while ($true)

2
投票

除了之前的建议之外,如果您有权访问 Power Automate,您还可以创建一个流程来删除列表中的所有项目。

您的流程将如下所示:

  1. 有手动触发器
  2. 获取SP列表中的所有物品
  3. 将变量 COUNT_OF_LIST 设置为 length(outputs('Get_items_Items_of_list')?['body/value']) => 列表中的项目数
  4. 执行直到 COUNT_OF_LIST 等于 0
  5. 获取您要从列表中删除的所有项目
  6. 应用到每个项目并使用“删除项目”操作将其删除
  7. 再次获取列表中的所有项目
  8. 将 COUNT_OF_LIST 设置为 length(outputs('Get_items_Inner')?['body/value']) => 剩余项目的数量

由于正常的“获取物品”操作只会为您提供 100 个物品,因此您需要将高级选项中的“最高计数”设置为 4999 (https://alextofan.com/2019/08/22/how-to-get-more-比-5000-item-from-sharepoint-online-in-flow/#:~:text=5000%20items%20limit&text=%20maximum%20top%20count%20you,比%20100%20items%20are%20已检索。)

此流程可以优化,因为它有很多“获取项目”操作。但现在这应该可以解决问题。


1
投票

在您的 SharePoint 网站中,您可以转到您的列表,您可以单击列表中第一项旁边的复选框(它应该突出显示所有项目),然后单击列表工具功能区中的“项目”,您将看到删除按钮。

如果您没有看到复选框,请通过单击“工具”功能区中的“列表”来编辑视图,然后转到修改视图。滚动到设置底部,您应该看到“表格视图”并启用复选框。

这应该有帮助。 :)


1
投票

仅对于 SharePoint Online,您可以使用 Microsoft Graph 并发送对列表中每个项目的请求,逐个删除每个项目(但在 foreach 循环中快速删除)。

  1. 从列表中获取项目(方法 = GET):

/站点/{id}/列表/{id}/项目

  1. 循环遍历每个项目并删除它们(方法 = DELETE):

/站点/{id}/列表/{id}/项目/{id}

从今天起我就成功了!使用我的 PowerShell 模块执行 MS Graph 函数,https://www.powershellgallery.com/packages/MSGraphAppOnlyEssentials

我使用 New-MSGraphAccessToken 获取访问令牌,然后使用 New-MSGraphQuery(在该模块的未来版本中将重命名为“New-MSGraphRequest”)。您需要首先在 Azure AD 中设置应用程序注册,并确保它具有 Microsoft Graph API for Sites.ReadWrite.All 下的 API 权限。然后,您需要生成自签名证书并将其存储在 CurrentUser/My 中,并将证书导出/上传/导入到 Azure AD 中的应用程序注册中(无需私钥)。

https://learn.microsoft.com/en-us/graph/api/resources/listitem?view=graph-rest-1.0 https://learn.microsoft.com/en-us/graph/api/listitem-delete?view=graph-rest-1.0&tabs=http

我也会厌倦限制限制,并考虑在 foreach 循环中放置 Start-Sleep 以避免受到限制。


0
投票

您只需选择项目并删除键即可删除多个项目。

列表==>查看格式==>快速编辑


0
投票

如果列表有很多元素,一种选择是将列表导出为模板,删除原始列表并从模板重新创建它。 (或者更一般地说,删除并重新创建,但使用模板,后一步就不那么痛苦了。)


0
投票

您可以通过滚动列表视图来删除视图中的 100 多个项目 - 当您到达前 100 个项目的末尾时,会加载另外 100 个项目。我已经能够以这种方式删除 2500 行。它不像之前的一些答案那么快,但这是可能的。

© www.soinside.com 2019 - 2024. All rights reserved.