Power Automate:验证邮件附件Excel与SharePoint Excel内容是否一致
方案可行性与实现细节
这个需求完全可行,核心思路是通过对比两个文件内容的SHA256哈希值来判断是否一致——只要文件内容有任何差异(哪怕是单行数据不同、格式微调),哈希值就会完全不同,能精准匹配你的需求。
具体实现步骤(在「Create File」操作前插入)
1. 检查SharePoint目标文件是否存在
- 添加「List files in folder」操作,选择目标SharePoint站点和文档库,设置文件夹路径(文件直接在根目录则留空)。
- 添加「Filter array」操作,输入「List files in folder」的输出,过滤条件设为
Name等于邮件附件的文件名(triggerBody()?['Attachments']?[0]?['Name'])。 - 插入第一个「Condition」,判断过滤后的结果是否为空:
- 如果为空(文件不存在):直接跳转到「Create File」操作,完成首次上传。
- 如果不为空(文件已存在):继续执行后续对比步骤。
2. 获取并计算新旧文件的哈希值
- 获取现有文件内容:添加「Get file content」操作,文件路径选择「Filter array」输出的第一个文件的
Path。 - 计算新附件哈希值:添加「Compose」操作(命名为「新文件哈希」),输入表达式:
sha256(triggerBody()?['Attachments']?[0]?['ContentBytes']) - 计算现有文件哈希值:添加另一个「Compose」操作(命名为「现有文件哈希」),输入表达式:
sha256(body('Get_file_content')?['$content'])
3. 对比哈希值并执行对应逻辑
- 插入第二个「Condition」,判断「新文件哈希」是否等于「现有文件哈希」:
- 如果相等:说明内容完全一致,添加「Terminate」操作,状态选择「Succeeded」,终止流不执行后续操作。
- 如果不相等:继续执行「Create File」操作,记得勾选操作面板里的「覆盖已存在的文件」选项,直接替换旧文件。
补充注意事项
- 文件名不固定的场景:如果邮件附件的文件名可能变化,提前定义好SharePoint上的目标文件名(比如固定命名为「数据报表.xlsx」),在「Create File」时指定固定文件名即可。
- 哈希计算的可靠性:SHA256哈希算法几乎不会出现碰撞,完全能满足你对内容一致性判断的要求。
- 错误处理:给「Get file content」操作设置「Configure run after」,勾选「Failed」和「Skipped」,当文件不存在时自动跳转到「Create File」,避免流因错误中断。
内容的提问来源于stack exchange,提问作者Samwise
相关产品推荐
相关产品推荐

