Power Automate OneDrive创建文件触发器xlsx触发条件报错求助
OneDrive创建文件触发器仅响应.xlsx文件的触发条件配置
报错根因
该类型错误由两个问题导致:
- 引用的
headers/x-ms-file-name-encoded字段是URL编码后的文件名,在触发器初始化校验阶段该字段可能为空,直接传入字符串匹配函数就会触发Null类型错误 - 用
contains函数匹配后缀逻辑不严谨,会误命中文件名中包含xlsx字符但后缀不是.xlsx的文件,比如xlsx操作手册.docx、报表.xlsx.tmp这类文件都会误触发流。
正确配置方案
优先使用触发器Body节点下的原生文件名属性配置触发条件,不需要处理编码问题,也不会出现空值校验异常:
- 进入触发器的「设置」-「触发条件」面板,删除原有错误表达式
- 填入以下后缀匹配表达式,直接匹配解码后的原生文件名后缀,同时兼容大写后缀的
.XLSX文件避免漏触发:
@endsWith(toLower(triggerOutputs()?['body/Name']), '.xlsx')
如果是旧版本流无法读取到body/Name属性,就对编码字段做空值兜底+解码处理,使用以下表达式:
@if( empty(triggerOutputs()?['headers/x-ms-file-name-encoded']), false, endsWith(toLower(decodeUriComponent(triggerOutputs()?['headers/x-ms-file-name-encoded'])), '.xlsx') )
验证方式
配置完成后分别上传三类文件测试:
- 后缀为.xlsx/.XLSX的正常Excel文件:确认流正常触发
- 文件名带xlsx字符但后缀非xlsx的文件:确认流不触发
- 无后缀、临时缓存文件:确认流不触发
内容的提问来源于stack exchange,提问作者ckatz
相关产品推荐
相关产品推荐

