使用Power Automate获取日历事件:Filter Query中用toupper转换主题报错
Power Automate日历事件ODATA大小写不敏感过滤问题解决
错误原因分析
- 无效的ODATA过滤器参数:你当前的
$filter中contains的第二个参数是空字符串'',ODATA规范不允许contains的搜索值为空,这是触发“无效节点”错误的直接原因。 - Power Automate与ODATA函数的混淆:如果在设置过滤器时误启用Power Automate的表达式模式解析
toupper,会导致Power Automate执行自身的toUpper函数,而非将ODATA的toupper函数传递给Graph API,从而破坏过滤器语法。
解决方案
1. 基础固定字符串过滤
直接在“获取日历事件”动作的高级选项的$filter文本框中填写ODATA语法,确保不启用Power Automate的表达式模式:
contains(toupper(subject), '你的目标字符串(大写)')
例如,要匹配主题包含“项目同步”的事件,需将目标字符串转大写后写入:
contains(toupper(subject), '项目同步')
2. 动态变量过滤
如果需要动态传入目标字符串,使用Power Automate表达式拼接ODATA过滤器,注意转义单引号并确保ODATA的toupper函数被正确传递:
concat('contains(toupper(subject), ''', toUpper(variables('目标字符串变量')), ''')')
- 用
toUpper(variables('目标字符串变量'))将动态内容转大写,保证匹配的大小写一致性 - 用两个单引号
''转义字符串中的单引号,避免Power Automate解析错误
3. 验证正确的输入参数示例
修正后的输入参数应类似:
{ "calendarId": "--", "startDateTimeUtc": "2024-09-06T15:11:53.4906978Z", "endDateTimeUtc": "2025-04-06T15:11:53.5200459Z", "$filter": "contains(toupper(subject), '项目同步')", "$orderby": "Start/DateTime" }
内容的提问来源于stack exchange,提问作者user1505210
相关产品推荐
相关产品推荐

