Power apps - 在 SharePoint 列表中创建用户没有编辑权限的新项目

问题描述

我想在 Power 应用程序中创建一个应用程序,用户可以通过它在列表中创建新项目。但是,我不想授予用户对保存新项目的 SharePoint 列表的编辑权限。理想情况下,我根本不希望他们访问该列表。

我虽然可以在 PowerApp 中使用 Patch 功能,但后来我发现 Patch 不支持附件,我们需要选择包含附件。

如果您有任何关于如何执行此操作的建议,我将不胜感激。

谢谢

解决方法

遗憾的是,PowerApps 使用最终用户的上下文连接到 SharePoint。您必须至少授予他们对列表的贡献权。您可以创建一个自定义权限,让用户可以创建但不能编辑(我没有这样做,也不知道会发生什么)。

这是您可以用来解决问题的选项。同样,您需要向用户授予对 SharePoint 列表的编辑/贡献权限。

然后您可以通过 Power Automate 更改列表项的权限。

  1. 创建一个 Power Automate,在创建项目时做出响应

  2. 您需要获得一些用户和组参考

    1. 添加操作“向 SharePoint 发送 HTTP 请求”
    2. 连接到您的网站
    3. 设置方法为GET
    4. 将 URI 设置为 _api/web/sitegroups/getbyname('Your Site Owner Group')
  3. 在撰写操作中记录 ID - body('Send_an_HTTP_request_to_SharePoint')['d']['Id']

  4. 向您的 SharePoint 网站发送另一个 HTTP 请求以获取用户 ID。将 URI 设置为 _api/web/siteusers('triggerBody()?['Author']?['Claims']') enter image description here

  5. 将用户 ID 记录到一个组合中:body('Send_an_HTTP_request_to_SharePoint_2')['d']['Id']

  6. 你需要得到一份你的角色定义列表。因此,向您的 SharePoint 网站发送 HTTP 请求到 _api/Web/RoleDefinitions

    1. 过滤搜索结果以进行编辑
    2. 添加过滤器阵列操作
    3. 设置为 @body('Send_an_HTTP_request_to_SharePoint_3')['d']['results']
    4. 将过滤器设置为 @item()['Name'] is equal to Read(屏幕截图显示编辑,您也需要)
    5. 在撰写中记录您的角色 ID:first(body('Filter_array'))['Id']

enter image description here

  1. 现在您可以设置权限了
  2. 打破列表项上的角色继承
    1. 向 SharePoint 发送 HTTP 请求。将方法设置为 POST 并将 Uri 设置为 _api/web/lists/getByTitle('Your List Name')/items(@{triggerBody()?['ID']})/breakroleinheritance(copyRoleAssignments=false,clearSubscopes=true)
    2. 添加标题 - 键:接受和值:application/json;odata=verbose
  3. 然后向您的站点发送 HTTP 请求以授予您的用户读取权限
    1. 将方法设置为 POST
    2. 将 Uri 设置为 _api/web/lists/getByTitle('Your List name')/items(@{triggerBody()?['ID']})/roleassignments/addroleassignment(principalid=@{outputs('User_ID')},roledefid=@{outputs('Read_Id')})
  4. 最后,向您的网站发送一个类似的 HTTP 请求,但这次发送您的所有者角色以授予他们编辑权限。

这有点高级,屏幕截图与您的具体情况不符,但应该为您指明正确的方向。

至于你关于附件的问题,你是对的。您无法修补附件。您必须创建一个连接到 SharePoint 的表单,然后在设置唯一权限之前弄清楚如何将该附件附加到您的列表项。我过去曾这样做过,方法是创建一个专门设置用于存储附件的列表,然后使用两个列表之间的公共字符串或数字将它们链接起来。您也可以尝试在补丁完成后获取新列表项的 ID,然后将 Form 的 Item 设置为列表项。

,

通过在文档库(列表所在的位置)创建自己的权限组并为其分配权限级别,您应该能够直接从 SharePoint 执行此操作。在您的文档库中,您可以点击 ⚙️(右上角)> 站点权限 > 高级权限设置 > 创建群组。

创建群组后,您可以将用户添加到该群组并为其提供所需的任何访问权限。仅查看、贡献、编辑等。以下是一个参考链接,用于了解每个权限级别允许您执行的操作:https://docs.microsoft.com/en-us/sharepoint/sites/user-permissions-and-permission-levels

来自 Microsoft 的此链接可以帮助您创建群组:https://docs.microsoft.com/en-us/sharepoint/customize-sharepoint-site-permissions#create-a-group

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...