Power Automate同邮件双附件分存不同文件夹条件判断失效
Power Automate多附件分目录存储故障修复方案
常见故障根因
双条件分支均返回false,通常由以下配置错误导致:
- 未将附件处理逻辑放入遍历循环:单附件场景不需要循环即可直接取到附件内容,多附件场景下如果把
Get Attachment (V2)、条件判断、文件创建步骤放在循环外,流程只会读取到附件数组的第一个对象元数据,第二个附件的名称字段取值为空,无法匹配关键字 - 附件名称字段引用错误:未引用
Get Attachment (V2)步骤输出的displayName字段,错误引用邮件触发器自带的Attachments Name字段——多附件场景下该字段返回数组类型值,和字符串关键字做包含判断时必然返回false - 包含逻辑参数顺序颠倒:可视化配置「包含」规则时,左侧需填入待检索的附件名称字符串,右侧填入匹配关键字,顺序写反会将短关键字作为待检索文本,永远无法匹配到更长的附件名称
- 未兼容格式差异:Power Automate默认
contains函数区分大小写,若配置的关键字和附件名实际大小写不一致,或是关键字/附件名前后带不可见的全角空格、换行符,会直接导致匹配失败
分步修复流程
- 删除现有独立配置的
Get Attachment (V2)、条件判断节点 - 在原有前置校验(邮件含附件、发件人匹配、主题匹配)节点后,新增
Apply to each循环控件,循环输入值选择邮件触发器输出的Attachments数组 - 在循环内部新增
Get Attachment (V2)步骤:Message Id字段选择触发器输出的Message IdAttachment Id字段选择当前循环项的Attachment Id
- 在循环内部新增条件判断节点,放弃可视化的默认「包含」配置,改用表达式编写匹配规则,自动处理大小写、前后空白字符问题:
- 第一个匹配分支(示例为匹配关键字“对账单”存入对应文件夹)的判断表达式:
contains(toLower(trim(body('Get_Attachment_(V2)')?['displayName'])), toLower(trim('对账单'))) - 第二个匹配分支(示例为匹配关键字“签收单”存入对应文件夹)的判断表达式:
contains(toLower(trim(body('Get_Attachment_(V2)')?['displayName'])), toLower(trim('签收单')))
注意:如果你的流程里修改过
Get Attachment (V2)步骤的默认名称,需要将表达式里的Get_Attachment_(V2)替换为对应步骤的内部ID,可在表达式编辑器的动态内容面板直接点选对应字段自动生成正确引用 - 第一个匹配分支(示例为匹配关键字“对账单”存入对应文件夹)的判断表达式:
- 在两个条件分支的「如果是」节点下,分别新增SharePoint/OneDrive的「创建文件」动作:
- 文件夹路径选择对应业务要求的目标文件夹地址
- 文件名称选择
Get Attachment (V2)步骤输出的displayName字段 - 文件内容选择
Get Attachment (V2)步骤输出的contentBytes字段
- 测试验证时可在循环运行历史中查看每轮迭代的附件名称取值,确认是否存在附件名带特殊版本号、后缀变动的情况,如有需要可在条件判断中追加
or连接的多个匹配规则,无需写全完整附件名称
配置避坑提示
- 禁止在
Apply to each循环外部调用Get Attachment (V2)处理多附件,该动作单次仅能返回单个附件的内容,外层调用必然出现取值错位 - 字符串匹配规则必须加
toLower()+trim()处理,规避大小写、不可见空白字符导致的匹配失败 - 不要使用「附件名称等于某固定值」的判断逻辑,供应商发送的附件名常带日期、随机编号后缀,使用「包含关键字」判断容错率更高
内容的提问来源于stack exchange,提问作者Streching my competence
相关产品推荐
相关产品推荐

