我有一个SharePoint在线列表,在一个网站上,组织中的每个人都有读取访问权限。 该列表有 3 列:"标题"、"链接"、"网站",是来自不同 SharePoint 网站且具有不同成员的页面的目录。该列表由 Flows 填充,该流在发布页面时触发,并且其名称遵循模式。
例如:
第一条 |链接到文章1 |财力
第二条 |链接到文章2 |管理
我想过滤此列表,以便每个用户只能看到指向他所属网站的链接。
查看上面的示例,如果当前用户是财务团队的成员,但不是管理部门的成员,则他应该只看到第 1 条。
是否可以通过 SharePoint 视图筛选或视图格式设置 json 来执行此操作?
谢谢!
您可以将类型为"用户/组"的第四列(组(添加到列表中,并用一个或多个组填充它,这些组应该查看它。之后,您可以使用 CAML成员资格元素进行筛选。
基本上,您的SPView.Query应该是这样的(如果ShowForGroups是包含组的列的内部名称(:
<Where>
<Or>
<Eq>
<FieldRef Name="ShowForGroups" />
<Value Type="Integer">
<UserID />
</Value>
</Eq>
<Membership Type="CurrentUserGroups">
<FieldRef Name="ShowForGroups" />
</Membership>
</Or>
</Where>
但是,您将无法使用 SharePoint 视图创建页面创建此类视图,您需要为此使用 Powershell。
我找到了这个问题的实际解决方案。
使用 CAML 查询不是解决方案,因为我们想要一个正确的视图。使用 CAML,我们只能在电源外壳中获取数据,这是没有用的。
请按照以下步骤实现目标:
1:创建一个类型为"个人或组"的新列,其名称为"组列">
2:创建一个名称为"自定义用户组"的新用户组
3:在列表中创建项目时,运行 Power Automate 流,该流将遍历用户组"自定义用户组"中的所有用户,并使用每个电子邮件地址填充该"组列"。
4:转到列表设置并向下滚动以打开默认列表视图。应用[ME]过滤器,并为该过滤器选择"组列"。
大功告成。现在,只要该用户组中的任何人将打开列表。他将看到所有项目。
同样,您可以在列表中创建不同的用户组和不同的列,并应用 [ME] 过滤器。