如何将Azure AD组成员存入PowerApps的SharePoint多选择人员列
解决方案
1. 优化组选择的变量赋值(避免重复代码)
先将两个AD组的信息存入集合,作为下拉控件的数据源:
ClearCollect(colADGroups, {GroupID: "b59ff3f6-31f7-45cd-bd1b-142e36dd3cb2", GroupName: "组1"}, {GroupID: "b59df3f6-35f7-45cd-bd2b-142e86bd3cd2", GroupName: "组2"} )
把下拉控件的Items属性设为colADGroups,DisplayFields设为["GroupName"],用户选择组后动态获取成员:
Set(varL2opgcUsermembers, AzureAD.GetGroupMembers(下拉控件.Selected.GroupID).value)
2. 转换AD成员格式为SharePoint人员列兼容结构
SharePoint多选人员列要求特定格式的集合,用ForAll转换变量中的成员:
ClearCollect(colSPCompatibleUsers, ForAll( varL2opgcUsermembers, If( !IsBlank(Mail), # 过滤无邮箱的成员,避免写入失败 { Claims: "i:0#.f|membership|" & Lower(Mail), DisplayName: DisplayName, Email: Mail, Picture: "", Department: "", JobTitle: "" } ) ) )
执行后,colSPCompatibleUsers就是符合SharePoint要求的人员集合。
3. 将集合写入SharePoint多选人员列
用Patch函数完成新建或更新操作:
- 新建列表项:
Patch(你的SharePoint列表名称, Defaults(你的SharePoint列表名称), { 多选人员列名称: colSPCompatibleUsers # 其他列的赋值可添加在此处 } )
- 更新现有列表项:
Patch(你的SharePoint列表名称, LookUp(你的SharePoint列表名称, ID = 目标项ID), # 替换为你的目标项筛选条件 { 多选人员列名称: colSPCompatibleUsers } )
注意事项
- 确保Power Apps已配置Azure AD和SharePoint的连接权限
- 若AD成员无
Mail属性,可改用UserPrincipalName替换Mail字段(Claims格式改为"i:0#.f|membership|" & Lower(UserPrincipalName)) - 若需要保留原有人员列数据并追加新成员,可修改为
多选人员列名称: 原有集合 & colSPCompatibleUsers
内容的提问来源于stack exchange,提问作者kmax01
相关产品推荐
相关产品推荐

