Logic App的SharePoint连接器筛选触发器报endsWith首参数为Null错误
报错根本原因
- 你使用的表达式取值路径存在错误:
x-ms-file-name是SharePoint连接器内部做批量事件拆分、初始元数据校验阶段临时存在的请求头字段,不会在所有正式触发的运行实例的headers中持久存在。 - 当连接器正式拉取到文件变更、生成可运行的触发实例时,headers对象内没有
x-ms-file-name这个键,表达式取到的值为Null,不符合endsWith函数首参数必须为字符串的类型要求,因此抛出类型错误。 - 你能在触发器运行记录里看到文件名正常显示,是因为文件名实际存储在触发器输出的
body节点下,而非headers节点,属于取值路径写错导致的空值问题。
修正方案
将筛选表达式替换为从body节点读取文件名字段的写法即可:
@endsWith(triggerBody()?['FileName'], '.xlsx')
如果是在触发器自带的触发条件栏配置规则,也可以直接在表达式编辑器中选择动态内容列表里的「文件名」选项,系统会自动生成正确的取值路径,避免手动编写路径出现层级错误。
注意:不要依赖触发器输出headers里的字段做业务逻辑判断,这类字段属于连接器与服务端内部通信的临时元数据,不保证全场景、全运行实例下都存在,所有业务判断需要的属性都要从
triggerBody()即触发器输出的正文内容中获取。
内容的提问来源于stack exchange,提问作者joba2ca
相关产品推荐
相关产品推荐

