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

Power Automate提取邮件中未知数量数据组的最优方案求询

解决Power Automate动态提取多组邮件数据的方案

方法1:正则表达式批量匹配(推荐,格式固定时最可靠)

利用邮件格式固定的特点,用正则一次性捕获所有数据组,摆脱固定索引限制:

  1. 保留原有流程第一步:将邮件正文转成文本(HTML-to-text)
  2. 添加「Compose」动作,输入以下表达式(根据实际邮件字段格式调整正则内容):
    matches(outputs('HTML_to_text'), 'Name: (.*?)\s*Age: (.*?)\s*Location: (.*?)(?=\s*Name:|$)')
    
    执行后会返回一个数组,每个元素对应一组数据,包含Name、Age、Location三个捕获值
  3. 添加「Apply to each」动作,遍历上述Compose的输出数组
  4. 在循环内,用以下表达式提取每组的值:
    • Name:items('Apply_to_each')[0]
    • Age:items('Apply_to_each')[1]
    • Location:items('Apply_to_each')[2]
  5. 调用「Add a row into a table」动作,将提取的值写入Excel

注意:如果邮件字段标签(比如「Name:」)有大小写或空格差异,可调整正则为(?i)Name:忽略大小写。

方法2:按固定行数列分组处理

如果每组数据在文本数组里占固定行数(比如每组3行:Name、Age、Location各一行),通过动态索引遍历:

  1. HTML转文本后,将内容拆分成行数组:
    split(outputs('HTML_to_text'), decodeUriComponent('%0A'))
    
  2. 用「Filter array」动作过滤掉空行和无关行(比如邮件签名、标题等,只保留含目标字段的行)
  3. 初始化整数变量currentGroupIndex,初始值为0
  4. 添加「Do until」循环,设置退出条件为variables('currentGroupIndex') >= div(length(outputs('Filtered_array')), 3)(假设每组3行)
  5. 在循环内,通过动态索引提取每组数据:
    • Name:outputs('Filtered_array')[variables('currentGroupIndex')*3]
    • Age:outputs('Filtered_array')[variables('currentGroupIndex')*3+1]
    • Location:outputs('Filtered_array')[variables('currentGroupIndex')*3+2]
  6. 将数据写入Excel后,把currentGroupIndex自增1

方法3:解析HTML结构(如果邮件HTML有固定容器)

若邮件HTML代码里,每组数据都包裹在固定标签容器内(比如<div class="data-group">),直接解析DOM:

  1. 无需转文本,直接获取邮件的HTML正文
  2. 添加「Compose」动作,用XPath提取所有数据组节点:
    xpath(outputs('Get_email_body')?['body'], '//div[@class="data-group"]')
    
  3. 遍历每个节点,用XPath提取字段值(根据实际HTML结构调整路径):
    • Name:xpath(items('Apply_to_each'), 'string(.//*[contains(text(),"Name:")]/following-sibling::text())')
    • 同理提取Age和Location
  4. 将提取的值写入Excel

内容的提问来源于stack exchange,提问作者Melby

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:15:40