Power Automate自动添加嵌套Apply to Each致发送邮件报错求助
问题根源
SharePoint的用户/用户组类型列返回的是数组格式(即便列中只有一个用户),Power Automate识别到数组类型的动态内容时,会自动包裹Apply to Each循环,导致流程嵌套出错。
具体解决方法
1. 提取单个用户列的邮箱(避免触发循环)
如果用户列仅存储单个用户,使用first()函数提取数组中的第一个用户对象,再获取其邮箱地址,直接作为字符串填入收件人:
first(outputs('Get_items')?['body/value']?[0]?['你的用户列内部名称'])?['Email']
注:替换你的用户列内部名称为实际列名,可在SharePoint列表设置中查看列的内部名称
2. 合并两个用户列的收件人
要同时将两个用户列的用户作为收件人,用concat()函数拼接两个提取后的邮箱,用分号分隔(符合邮件收件人格式):
concat( first(outputs('Get_items')?['body/value']?[0]?['用户列1'])?['Email'], ';', first(outputs('Get_items')?['body/value']?[0]?['用户列2'])?['Email'] )
3. 处理多用户场景(列中存在多个用户)
如果用户列允许添加多个用户,可直接用join()函数将数组转成分号分隔的邮箱字符串,无需循环:
join(outputs('Get_items')?['body/value']?[0]?['多用户列']?['Email'], ';')
如果需要合并两个多用户列,先合并数组再join:
join(union(outputs('Get_items')?['body/value']?[0]?['用户列1'], outputs('Get_items')?['body/value']?[0]?['用户列2'])?['Email'], ';')
4. 流程调整要点
- 先在
Get Items之后添加Compose操作,把上述函数写在Compose里,验证输出的邮箱字符串格式正确后,再将Compose的输出拖到Send an Email的收件人框中。 - 若担心空值报错,可嵌套
if(empty(...), '', ...)处理空用户列:concat( if(empty(outputs('Get_items')?['body/value']?[0]?['用户列1']), '', first(outputs('Get_items')?['body/value']?[0]?['用户列1'])?['Email']), if(and(not(empty(outputs('Get_items')?['body/value']?[0]?['用户列1'])), not(empty(outputs('Get_items')?['body/value']?[0]?['用户列2']))), ';', ''), if(empty(outputs('Get_items')?['body/value']?[0]?['用户列2']), '', first(outputs('Get_items')?['body/value']?[0]?['用户列2'])?['Email']) )
内容的提问来源于stack exchange,提问作者Ian
相关产品推荐
相关产品推荐

