【问题标题】:How to delete all items from list?如何从列表中删除所有项目?
【发布时间】:2014-09-15 00:49:39
【问题描述】:

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

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

【问题讨论】:

    标签: sharepoint


    【解决方案1】:

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

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

    这应该会有所帮助。 :)

    【讨论】:

    • 但我的列表有大约 3000 项...我无法通过单击复选框来全选
    • 列表的左上角应该有一个框,应该突出显示所有项目。
    • @Du6e 似乎只选择所有可见(页面)项目;并非列表/视图中的所有项目。
    【解决方案2】:

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

    【讨论】:

    • 谢谢你!有用!!这是删除所有项目的最简单方法!
    • 它允许您查看 1000 个项目,但不可能同时删除所有项目。 Sharepoint 允许您一次只删除 100 个项目。我不明白为什么它在这里标记答案。 @Thiago 它真的对你有用吗?
    • @anhtv13 不幸的是,有时即使没有测试,答案也会被标记或投票。并非所有投票的人都会真正测试解决方案。 :(
    • @anhtv13,在 SharePoint Online 或 O365 上,这是可行的,我可以一次删除 1000 个项目。
    • 我可以确认它也适用于 O365 / SharePoint Online
    【解决方案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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        您可以通过选择项目和删除键来删除多个项目。

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

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

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

            【讨论】:

              【解决方案8】:

              @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)
              

              【讨论】:

                【解决方案9】:

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

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

                /sites/{id}/lists/{id}/items

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

                /sites/{id}/lists/{id}/items/{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://docs.microsoft.com/en-us/graph/api/resources/listitem?view=graph-rest-1.0 https://docs.microsoft.com/en-us/graph/api/listitem-delete?view=graph-rest-1.0&tabs=http

                我也会厌倦节流限制,并考虑在你的 foreach 循环中放置一个 Start-Sleep 以避免被节流。

                【讨论】:

                  【解决方案10】:

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

                  您的流程将如下所示:

                  1. 有手动触发
                  2. 获取您的 SP 列表中的所有项目
                  3. 将变量 COUNT_OF_LIST 设置为长度(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 个项目,因此您需要将高级选项中的 Top Count 设置为 4999 (https://alextofan.com/2019/08/22/how-to-get-more-than-5000-item-from-sharepoint-online-in-flow/#:~:text=5000%20items%20limit&text=The%20maximum%20top%20count%20you,than%20100%20items%20are%20retrieved.)

                  这个流程可以优化,因为它有很多 Get Items 操作。但现在这应该可以解决问题。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2013-04-20
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2011-11-16
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多