Power Automate共享邮箱邮件触发条件失效排查求助
Power Automate共享邮箱触发器条件报错解决
为啥会报Null错误
说白了就是你调用的字符串函数(比如endsWith、contains)拿到了空值参数——有些邮件的发件人邮箱或者主题可能是空的(比如某些系统自动发的无主题邮件、匿名邮件),直接塞给函数就会触发类型不匹配的错误。
解决步骤
1. 写带空值判断的触发条件
别直接写域名和主题的判断,先加两层空值检查,用and()把所有条件串起来,直接在触发器的触发条件里填这个表达式:
@and( not(empty(triggerBody()?['from']?['emailAddress']?['address'])), not(empty(triggerBody()?['subject'])), endsWith(triggerBody()?['from']?['emailAddress']?['address'], '@你的目标域名.com'), contains(triggerBody()?['subject'], '你的特定字符串') )
- 细节说明:
triggerBody()?['from']?['emailAddress']?['address']:这里的?是可选链,就算某个字段不存在,也不会直接返回Null,而是返回空,避免报错not(empty(...)):先把发件人邮箱和主题为空的情况排除掉,再执行后面的判断- 最后两个就是你需要的域名后缀和主题包含判断
2. 触发器设置要正确
- 找到触发器的设置选项,开启
Only include messages with specific properties - 直接把上面的表达式粘贴到触发条件输入框里,别用界面的条件编辑器(界面编辑器经常不会自动处理空值情况,容易踩坑)
3. 排查特殊邮件
如果还是报错,就加个临时的“撰写邮件”或者“记录日志”步骤,把triggerBody()?['from']?['emailAddress']?['address']和triggerBody()?['subject']的值输出来,看看是哪些邮件导致的空值,再针对性调整条件(比如如果允许主题为空,就去掉主题的空值判断)
避坑提醒
- 别直接写
triggerBody()['from']['emailAddress']['address']:有些邮件根本没发件人信息,这么写直接返回Null,必须加?或者先判断是否存在 - 空值判断必须放在最前面:不管你要判断什么,先确保要用到的字段不是空的,再调用字符串函数
内容的提问来源于stack exchange,提问作者cdfj
相关产品推荐
相关产品推荐

