使用Power Automate将特定Office 365邮件附件保存到Azure Blob
解决Power Automate仅保存特定邮件附件到Azure Blob的方法
核心思路很直接:在保存附件到Blob的步骤前,先通过筛选或条件判断锁定目标文件,再执行存储操作。下面是两种实用的实现方案:
方案1:逐个附件判断(适合简单规则)
- 先确认「收到新邮件时」触发器是否自带附件列表——新版V3触发器直接输出
附件集合,可直接使用;若没有,添加「获取邮件附件」动作拿到所有附件。 - 新增「应用到每一个」动作,选择触发器或「获取邮件附件」返回的附件集合。
- 在「应用到每一个」内部添加「条件」动作,设置过滤规则:
- 匹配文件名关键词:比如
附件名称包含月度报表 - 限定文件类型:比如
附件名称以.xlsx结尾
- 匹配文件名关键词:比如
- 仅在条件的「如果是」分支中添加「创建Blob」动作,上传当前附件到Azure Blob容器;「如果否」分支留空,自动跳过不符合要求的附件。
方案2:批量筛选附件(适合复杂规则)
- 同样先获取所有附件集合(触发器自带或「获取邮件附件」动作)。
- 添加「筛选数组」动作,输入选择附件集合,设置筛选规则:
- 示例1:仅保留含「合规文档」关键词的附件:
item()?['Name']包含合规文档 - 示例2:仅保留PDF和Excel文件:
or(endsWith(item()?['Name'], '.pdf'), endsWith(item()?['Name'], '.xlsx'))等于true - 忽略大小写判断:用
toLower()转换后匹配,比如contains(toLower(item()?['Name']), 'report')
- 示例1:仅保留含「合规文档」关键词的附件:
- 添加「应用到每一个」动作,选择「筛选数组」输出的过滤后附件集合。
- 在「应用到每一个」内部添加「创建Blob」动作完成上传。
小提示
- 避免附件重名覆盖:「Blob名称」可添加时间戳前缀,比如写
concat(utcNow('yyyyMMddHHmmss'), '-', 附件名称),生成带时间标记的唯一文件名。
内容的提问来源于stack exchange,提问作者Enmanuel López
相关产品推荐
相关产品推荐

