如何在Logic App中将分页获取的Azure AD用户组成员存入数组
解决Logic App中分页用户数据合并到数组的问题
嘿,我完全懂你碰到的这个坑!你用union表达式的时候,以为是在往AllUserInfoArray里追加数据,但其实Logic App里的变量是不可变的——union只是生成了一个新的合并数组,如果你不把这个结果存回原变量,原来的AllUserInfoArray根本不会有任何变化,这就是为什么你只在Compose里看到新数组,而变量本身没更新。
下面是具体的解决步骤,帮你把所有分页用户数据都存进AllUserInfoArray:
确认变量初始化
确保你已经在Logic App的初始化步骤里创建了AllUserInfoArray变量,类型设为数组,初始值可以设为空数组[]。在循环中更新变量
每次通过HTTP请求拿到当前页的用户数据后,不要只把union的结果放到Compose里,而是要添加一个Set variable动作:- 选择目标变量为
AllUserInfoArray - 赋值表达式用下面的其中一种:
- 如果你的分页数据不会有重复用户(正常情况下分页返回的用户是唯一的),用
concat更直接:concat(variables('AllUserInfoArray'), body('HTTP_-_Request_My_Group_Name_group_members')['value']) - 如果担心有重复用户需要去重,就用
union:union(variables('AllUserInfoArray'), body('HTTP_-_Request_My_Group_Name_group_members')['value'])
- 如果你的分页数据不会有重复用户(正常情况下分页返回的用户是唯一的),用
这个动作的核心就是把合并后的新数组重新赋值给
AllUserInfoArray变量,这样每次循环后变量里的数据就会累加。- 选择目标变量为
循环结束后处理数组
当没有NextLink退出循环后,AllUserInfoArray就已经包含了所有分页获取到的用户数据(名字、姓氏、UPN等),这时候你就可以直接遍历这个变量来做后续的统一处理了。
额外提醒
- 要确保HTTP返回的
value字段确实是数组类型,如果返回的是其他格式,可能需要用json()表达式把它转换成数组,比如json(body('HTTP_-_Request_My_Group_Name_group_members')['value'])。 - 循环的顺序要正确:先获取当前页数据,再执行Set variable更新数组,然后再检查NextLink决定是否继续循环。
内容的提问来源于stack exchange,提问作者Martijn Balink
相关产品推荐
相关产品推荐

