如何自动将Outlook中的Excel附件转为CSV UTF-8并上传至Azure Blob Storage
自动化实现流程方案
方案一:Power Automate(低代码快速落地)
适合无开发经验,依托微软生态快速搭建自动化流程:
- 触发规则配置:创建新流,选择「当收到新邮件(V3)」触发器,设置精准筛选条件:
- 发件人匹配ServiceNow官方邮箱
- 主题包含报表相关关键词(如"每日运营报表")
- 附件存在且后缀为
.xlsx/.xls
- 遍历处理附件:添加「应用到每个」动作,遍历邮件附件集合,仅处理Excel格式文件
- 转换为UTF-8编码CSV:
- 用「转换文件」动作将Excel附件转为CSV格式
- 添加「编码内容」动作,选择转换后的CSV内容,编码格式设为
UTF-8,输出类型选「字节」
- 上传至Azure Blob存储:添加「创建Blob」动作,连接Azure存储账户,指定目标容器,Blob名称设为
报表名称_时间戳.csv(避免重名),内容选择编码后的UTF-8字节流
方案二:Python脚本(自定义度高)
适合有开发能力,需要灵活扩展逻辑的场景:
- 依赖库安装:执行
pip install pandas openpyxl azure-storage-blob msal安装所需工具库 - 核心逻辑步骤:
- 读取Outlook邮件:通过Microsoft Graph API完成OAuth认证,筛选来自ServiceNow的目标邮件,获取并下载Excel附件到本地临时目录
- Excel转UTF-8 CSV:用pandas读取Excel文件(支持多Sheet,可按需合并或单独导出),执行
df.to_csv("temp_report.csv", encoding="utf-8", index=False)生成UTF-8编码的CSV文件 - 上传至Blob存储:用
azure-storage-blob的BlobClient连接目标存储账户和容器,调用upload_blob上传CSV文件,上传完成后删除本地临时文件
- 定时执行:用Windows任务计划或Linux Cron设置每日定时运行脚本,实现自动化触发
通用注意事项
- Power Automate需确保操作账户同时拥有Outlook和Azure Blob存储的访问权限
- Python脚本需妥善保管OAuth认证密钥和Azure存储连接字符串,避免泄露
- 两种方案都建议添加异常处理逻辑,比如邮件无有效附件、Excel文件损坏、Blob上传失败时触发日志记录或告警
内容的提问来源于stack exchange,提问作者user3840800
相关产品推荐
相关产品推荐

