如何在Logic Apps中按文件类型分类邮件及附件并上传至Blob存储
Logic Apps 提取分类Excel附件并上传Blob实现方案
一、核心流程搭建
- 触发逻辑:使用Office 365 Outlook连接器的「当收到新邮件(V3)」触发器,指定监控的收件箱。
- 获取附件:添加「获取邮件附件」动作,关联触发器输出的
邮件ID,拉取当前邮件的所有附件数据。
二、附件类型判断与Blob上传
添加「应用到每一个」循环,循环对象选择「获取邮件附件」返回的附件列表,在循环内添加分支判断:
- 判断宏Excel文件(.xlsm):
- 条件规则:
endsWith(toLower(items('应用到每一个')?['Name']), '.xlsm') - 满足条件时,添加「创建Blob」动作:选择目标存储账户和容器,设置文件夹路径为
xlsm-files/,Blob名称填items('应用到每一个')?['Name'],Blob内容填items('应用到每一个')?['ContentBytes']。
- 条件规则:
- 判断普通Excel文件(.xlsx):
- 在上述条件的「否则」分支里,添加嵌套条件:
endsWith(toLower(items('应用到每一个')?['Name']), '.xlsx') - 满足条件时,添加「创建Blob」动作:文件夹路径设为
xlsx-files/,其他参数同xlsm的上传配置。
- 在上述条件的「否则」分支里,添加嵌套条件:
三、邮件分类处理
根据需求选择以下分类方式:
- 标记邮件类别:
- 初始化两个布尔变量
hasXlsm和hasXlsx,默认值为false。 - 在附件判断的对应分支里,分别将变量设为
true。 - 循环结束后,添加「更新邮件」动作:
- 若
hasXlsm为true且hasXlsx为true:设置邮件类别为「混合Excel文件」 - 若仅
hasXlsm为true:设置类别为「宏Excel文件」 - 若仅
hasXlsx为true:设置类别为「普通Excel文件」
- 若
- 初始化两个布尔变量
- 移动邮件到专属文件夹:
循环结束后,根据变量判断结果,添加「移动邮件」动作,将邮件移至邮箱内预先创建的「XLSM邮件」「XLSX邮件」或「混合Excel邮件」文件夹。 - 添加自定义标签:
使用「应用邮件标签」动作,给不同类型的邮件打上对应的标签(需提前在Outlook中创建好标签)。
四、关键注意事项
- 权限配置:确保Logic Apps拥有目标邮箱的读取/修改权限,以及Blob存储账户的写入权限。
- 大小写兼容:通过
toLower()函数统一转换附件名称,避免因扩展名大小写(如.XLSM)导致判断失败。 - 多附件处理:循环会逐个处理附件,变量记录法能准确识别邮件是否包含多种类型的Excel附件,避免重复分类。
内容的提问来源于stack exchange,提问作者otaku
相关产品推荐
相关产品推荐

