PowerApp无法将AD组全部成员存入Person类型列问题咨询
我用以下代码根据条件获取AD组成员(代码已加注释),要把成员存入一个开启了「允许选择组」和「允许多项选择」的SharePoint人员类型列。但AD组明明有2个成员,最后只有1个被存入,请问哪里漏了?
If(GroupsField2.Selected.DisplayName = "ADGroup2", //GroupsField2是用于选择AD组的Person类型字段 ForAll(varADGroup2, //该变量已正确存储2个用户,数据显示有2名成员 { Claims:"c:0t.c|membership|"& userPrincipalName, Email:"", Department:"", DisplayName:"", JobTitle:"", Picture:"" } ) )
排查与解决方法
修正ForAll的使用方式:Power Apps里的ForAll是表格迭代工具,不是传统循环。直接返回ForAll结果赋值给人员列时,可能因为上下文问题导致数据截断。建议先把结果存入临时集合,再将集合赋值给目标列:
If(GroupsField2.Selected.DisplayName = "ADGroup2", // 先把生成的人员记录存入集合 ClearCollect(colADGroupMembers, ForAll(varADGroup2, { Claims:"c:0t.c|membership|"& userPrincipalName, Email:"", Department:"", DisplayName:"", JobTitle:"", Picture:"" } ) ); // 将集合赋值给SharePoint人员列(比如UpdateIf或Patch操作中) Patch(YourList, ThisItem, {YourPersonColumn: colADGroupMembers}) )补全人员记录的必要字段:虽然SharePoint允许部分字段为空,但缺失
DisplayName这类核心字段可能导致条目被系统过滤。如果varADGroup2里有用户的显示名称数据,建议补全:{ Claims:"c:0t.c|membership|"& userPrincipalName, Email: "", Department:"", DisplayName: DisplayName, // 从varADGroup2读取对应用户的DisplayName JobTitle:"", Picture:"" }验证变量数据完整性:确认varADGroup2中的两个用户数据都完整,尤其是
userPrincipalName没有空值或格式错误。可以在屏幕上添加标签,用CountRows(varADGroup2)确认数量,用Concat(varADGroup2, userPrincipalName & ", ")查看具体值,确保两个用户的标识都有效。
内容的提问来源于stack exchange,提问作者kmax01
相关产品推荐
相关产品推荐

