You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Automate自动添加嵌套Apply to Each致发送邮件报错求助

解决Power Automate中添加SharePoint用户列自动生成嵌套循环的问题

问题根源

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 07:47:06