Power Automate Cloud:检查SharePoint文件夹是否存在无扩展名同名文件
故障原因
你现有逻辑匹配失败的核心问题是字段取值逻辑不对:Get Files (properties only)返回的Name字段是带完整扩展名的文件名,你直接用这个值和已经去除扩展名的Outlook附件名做相等校验,两边值格式不统一,自然无法得到正确匹配结果。
修正步骤

- 保留已配置的
Get Files (properties only)操作,进入操作设置关闭「限制列视图」选项,避免必要字段被过滤;如果目标文件夹文件数超过100,打开分页设置将返回条目阈值调到大于预估文件总数即可。 - 替换
Filter array的筛选规则,不要直接拖拽动态字段做简单相等判断,切换到高级编辑模式,输入以下表达式,对SharePoint侧返回的文件名也做无扩展名提取,再和附件名做匹配:
@equals( // 提取SharePoint文件的无扩展名名称,兼容文件名本身带.的场景 if(equals(indexOf(item()?['Name'], '.'),-1),item()?['Name'],substring(item()?['Name'],0,lastIndexOf(item()?['Name'],'.'))), // 提取当前校验附件的无扩展名名称,如果是遍历多附件场景,把下面的附件字段替换为当前循环项的附件名即可 if(equals(indexOf(items('Apply_to_each')?['Name'], '.'),-1),items('Apply_to_each')?['Name'],substring(items('Apply_to_each')?['Name'],0,lastIndexOf(items('Apply_to_each')?['Name'],'.'))) )
- 原有分支判断逻辑不需要改动:直接计算
length(body('Filter_array')),结果为0时执行Create file上传附件,结果大于0时判定文件已存在、跳过上传即可。
注意事项
- 不要用
FileLeafRef字段做文件名匹配,该字段在部分SharePoint Online环境中会返回编码后的带路径值,匹配准确率极低。 - 无扩展名提取不要用
first(split(文件名, '.'))写法,遇到项目.v2.3.pdf这类带多个点的文件名会提取错误。 - 单流程触发带多份附件的场景,必须把附件校验、上传逻辑放在
Apply to each附件循环内部,不要在循环外做单次校验。
内容的提问来源于stack exchange,提问作者ckatz
相关产品推荐
相关产品推荐

