影刀RPA 采集结果自动发送邮件报告:数据采集推送一条龙 影刀RPA 采集结果自动发送邮件报告数据采集推送一条龙数据采集完了还得手动打开Excel、写邮件、粘贴数据、发出去。如果每天都要做一遍这中间的时间全浪费了。这篇文章把采集→生成报告→发送邮件的整条链路串起来做成一个全自动流程。整体流程采集数据 → 数据清洗 → 生成Excel报告 → 发邮件正文附件店群矩阵自动化突破运营极限每个环节前面都单独讲过这里把它们串成一个完整流程。完整流程实现主流程 daily_report.flow 阶段1采集 【运行子流程】→ collect_data.flow 出参raw_data列表、collect_time字符串 阶段2数据清洗 Python节点 → 清洗raw_data → clean_data - 去空行 - 格式标准化 - 异常值标记 阶段3生成Excel报告 Python节点 → 生成带样式的Excel 输入clean_data 输出report_path文件路径 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a63d1a6305b844669b1c033354844ab4.png#pic_center) 阶段4生成邮件内容 Python节点 → 生成HTML邮件正文 输入clean_data 的统计信息 输出email_subject, email_body 阶段5发送邮件 【发送邮件】 收件人bosscompany.com 主题email_subject 正文email_bodyHTML格式 附件report_path 阶段6记录日志 【日志输出】→ 本次执行汇总Python节点生成统计摘要fromdatetimeimportdatetimedefgenerate_summary(clean_data):生成数据统计摘要totallen(clean_data)# 按状态统计status_count{}total_amount0max_amount0max_amount_itemforiteminclean_data:statusitem.get(status,未知)status_count[status]status_count.get(status,0)1amountfloat(item.get(amount,0))total_amountamountifamountmax_amount:max_amountamount max_amount_itemitem.get(name,)summary{total:total,by_status:status_count,total_amount:total_amount,avg_amount:total_amount/totaliftotal0else0,max_amount:max_amount,max_item:max_amount_item,report_time:datetime.now().strftime(%Y-%m-%d %H:%M:%S),}returnsummary# 生成HTML邮件正文defbuild_email_html(summary):htmlf h2每日数据采集报告/h2 p采集时间{summary[report_time]}/p h3数据概览/h3 table border1 cellpadding8 styleborder-collapse:collapse tr stylebackground:#4472C4; color:white th指标/thth数值/th /tr trtd总数据量/tdtdb{summary[total]}/b 条/td/tr trtd总金额/tdtdb stylecolor:red¥{summary[total_amount]:,.2f}/b/td/tr trtd平均金额/tdtd¥{summary[avg_amount]:,.2f}/td/tr trtd最高金额/tdtd¥{summary[max_amount]:,.2f}{summary[max_item]}/td/tr /table h3状态分布/h3 table border1 cellpadding8 styleborder-collapse:collapse tr stylebackground:#4472C4; color:white th状态/thth数量/th /tr forstatus,countinsummary[by_status].items():htmlftrtd{status}/tdtd{count}/td/trhtml /table br p详细数据见附件。/p p stylecolor:#999此邮件由RPA自动生成/p returnhtmlPython节点生成Excel报告fromopenpyxlimportWorkbookfromopenpyxl.stylesimportFont,PatternFill,Alignment,Border,Sidefromdatetimeimportdatetimedefcreate_report(clean_data,output_dir):wbWorkbook()wswb.active ws.title采集数据# 表头headers[序号,名称,金额,状态,采集时间]header_fillPatternFill(start_color2F5496,end_color2F5496,fill_typesolid)header_fontFont(colorFFFFFF,boldTrue,size11)forcol,hinenumerate(headers,1):cellws.cell(row1,columncol,valueh)cell.fillheader_fill cell.fontheader_font cell.alignmentAlignment(horizontalcenter)# 数据行fori,iteminenumerate(clean_data,1):ws.cell(rowi1,column1,valuei)ws.cell(rowi1,column2,valueitem.get(name,))ws.cell(rowi1,column3,valuefloat(item.get(amount,0)))ws.cell(rowi1,column4,valueitem.get(status,))ws.cell(rowi1,column5,valueitem.get(time,))# 金额格式forrowinrange(2,len(clean_data)2):ws.cell(rowrow,column3).number_format¥#,##0.00# 列宽ws.column_dimensions[A].width8ws.column_dimensions[B].width25ws.column_dimensions[C].width15ws.column_dimensions[D].width12ws.column_dimensions[E].width20# 保存filenamef采集报告_{datetime.now().strftime(%Y%m%d_%H%M%S)}.xlsxfilepathf{output_dir}\\{filename}importos os.makedirs(output_dir,exist_okTrue)wb.save(filepath)returnfilepathtemu店群自动化报活动案例邮件发送的时机判断不是每次采集都发邮件。判断逻辑# 在影刀中IF clean_data 数量0:# 有数据生成并发送报告生成报告 → 发送邮件 ELSE:【日志输出】本次采集无数据不发送报告END IF# 只在有异常数据时发邮件IF 异常数据数量0:发送告警邮件 END IF总结采集→清洗→报告→邮件的全自动链路把人工从打开Excel→复制数据→写邮件→粘贴→发送的重复劳动中解放出来。每天早上打开邮箱报告已经躺在收件箱里了。作者林焱