影刀RPA新手教程:通知消息格式化完全指南——把数据拼成一条好看的消息
影刀RPA新手教程:通知消息格式化完全指南——把数据拼成一条好看的消息
一、开篇:群里的消息丑得让我想删机器人
我第一次给飞书群配完消息推送后,发出去的消息长这样:
“张三80李四92王五67赵六88”
同事在群里问:“这发的什么东西?看不懂。”
我当时脸都红了。数据是对了,但没有任何格式,就是一根大长条。
后来我花了一下午研究怎么把消息格式化,从那之后发出去的消息就赏心悦目了。
今天这篇就是教你怎么把原始数据变成一条清晰好看的通知消息。
二、安装与基础回顾
影刀的安装略过,官网下载Windows版,一路默认安装。
重点提示:安装时务必勾选浏览器扩展,这是网页元素捕获的基础。
影刀提供了丰富的字符串处理指令,这些是消息格式化的核心工具。
左侧指令列表搜索"字符串"或"文本",能看到拼接、替换、截取、分割等指令。
这些指令不需要额外安装插件,是影刀内置的功能。
三、元素定位与数据来源
消息格式化的前提是先把数据采集到。采集数据就要用到元素定位。
XPath快速入门://tr[contains(@class,'data-row')]/td[2]表示"找到所有class包含data-row的行,取每行第2个格子"。
影刀里经常会用到相似元素组:捕获第一个元素后,点"捕获相似元素"按钮捕获第二个同类元素,影刀就会自动识别出所有相似的元素。
这个功能在采集列表数据时特别好用。
批量数据抓取时影刀会自动帮你处理元素定位问题,你只需要在网页上框选数据区域就行。
四、变量与数据类型
消息格式化里最核心的技能是字符串操作,所以变量类型以字符串为主。
字符串变量:用双引号包裹,如name = "张三"。
数字变量:直接写数字,如count = 128。
拼多多店群自动化报活动上架!
列表变量:用方括号,如students = ["张三","李四","王五"]。
字典变量:用花括号,如student = {"name":"张三","score":90}。
字符串拼接用&符号:"姓名:" & name & ",成绩:" & score。
数字必须先转成字符串才能拼接消息。用"转换为字符串"指令。
转换:score_str = str(score),然后再拼接"成绩:" & score_str。
数字格式化:如果想显示88.00而不是88,用format(score, ".2f")保留两位小数。
五、流程控制与格式化逻辑
消息格式化的逻辑经常需要流程控制来配合。
比如:数据超过10条就用汇总格式,少于10条就逐条展示。
用If条件判断:data_count > 10。
如果数据多,就拼一条汇总消息:"今日共采集" & data_count & "条数据"。
如果数据少,就循环每条数据逐一展示。
For Each循环的用法:遍历数据列表,每次拿一条数据出来拼到消息变量后面。
message = message & (index+1) & ". " & item_name & ":" & item_value & "\n"这里的\n是换行符,在消息里会换行显示。
六、核心实战:格式化文本消息
假设你从网页上采集了以下数据,存在变量data_list(列表类型)里:
[{"name":"张三","score":80,"rank":1}, {"name":"李四","score":92,"rank":2}, ...]现在要把它们拼成一条好看的消息发到飞书群。
第1步:初始化消息变量。
message = "【每日成绩通报】\n"第2步:用For Each循环遍历data_list,把每条数据拼进去:
message = message & "第" & item.rank & "名:" & item.name & ",成绩:" & item.score & "分\n"第3步:在循环外面加汇总信息:
message = message & "\n共统计" & data_count & "位同学,平均分:" & avg_score & "分"最后消息的效果:
【每日成绩通报】 第1名:张三,成绩:80分 第2名:李四,成绩:92分 第3名:王五,成绩:67分 ... 共统计10位同学,平均分:85.3分是不是比"张三80李四92王五67"好看太多了。
七、进阶:表格格式化消息
如果数据列比较多,列格式的对齐就是个大问题。
比如商品数据有"商品名"“价格”"销量"三列,直接在消息里拼的话经常对不齐。
解决方法是用固定宽度填充空格:
Python代码片段,放在"执行Python代码"指令里:
msg="【销售数据汇总】\n"msg+="{:<10}{:<10}{:<10}\n".format("商品名","价格","销量")msg+="-"*30+"\n"foritemindata_list:msg+="{:<10}{:<10}{:<10}\n".format(item["name"][:8],str(item["price"]),str(item["sales"]))msg+="\n共{}条数据".format(len(data_list)){:<10}的意思是"左对齐,占10个字符位置"。这样每列都对齐了。
注意:飞书的文本消息是等宽字体,对齐效果很好。企业微信也是。
八、进阶:飞书富文本格式化
如果想让消息更好看,可以用飞书的富文本消息格式。
富文本支持加粗、颜色、引用等格式,比纯文本消息好看得多。
请求格式:
{"msg_type":"post","content":{"post":{"zh_cn":{"title":"每日数据报告","content":[[{"tag":"text","text":"采集状态:","style":[]},{"tag":"text","text":"成功","style":["bold"]}],[{"tag":"text","text":"数据总数:","style":[]},{"tag":"text","text":"count条","style":["bold"]}],[{"tag":"text","text":"\n数据摘要:\n","style":["bold"]}]]}}}}每条内容是一个数组,里面包含多个"tag":"text"的块。
每行是一个数组,可以放多个文本块,每个块单独设置样式。
缺点是这个JSON结构比较冗长,数据多的时候不好维护。
一般用于重要通知消息,日常消息用纯文本格式就够了。
我在home.linyan.cloud上整理了一些常用的消息格式化模板。
九、平台实战:从采集到格式化消息的完整流程
TEMU店群矩阵自动化运营核价报活动
现在串一个完整案例:从网页采集数据,格式化后发到飞书群。
场景:每天早上从数据看板采集TOP10商品数据,格式化后推送。
流程步骤:
- 打开浏览器,登录数据看板系统
- 进入"商品排行榜"页面
- 用"批量数据抓取"采集商品名、销售额、销售量
- 将采集的数据存到变量
product_list(列表,每个元素是字典) - 计算汇总数据:总销售额、平均销售量、TOP1商品
- 拼接消息内容
- 发送HTTP请求到飞书Webhook
- 关闭浏览器
消息拼接的核心代码在"设置变量"指令里:
msg = "【商品销售日报】\n日期:" & today & "\n\n🏆 TOP3商品:\n" msg = msg & "1. " & product_list[0].name & " 销售额" & product_list[0].sales & "元\n" msg = msg & "2. " & product_list[1].name & " 销售额" & product_list[1].sales & "元\n" msg = msg & "3. " & product_list[2].name & " 销售额" & product_list[2].sales & "元\n" msg = msg & "\n📊 汇总:共" & count & "个商品,总销售额" & total & "元"注意:上面用的是影刀字符串拼接方式,不是Python代码。影刀里的变量引用直接用变量名。
十、系统联动
消息格式化不是独立存在的,它和整个自动化生态紧密相连。
与定时任务联动:每天早上9点触发,自动采集、格式化、推送
与多个通知渠道联动:同一条格式化消息发给飞书群、企业微信群、邮件。
与数据库联动:从数据库查数据,格式化后推送。
与条件触发联动:只有当数据异常(比如销售额下降20%)时才发送特殊格式的告警消息。
一个实用的方案:配置两套消息格式,正常情况发简洁版,异常情况发详细版。
十一、工程化规范
消息格式化的工程规范非常重要,不然以后修改格式会让你怀疑人生。
消息模板单独存放,改格式时不改动业务逻辑。
每种消息格式给一个名字,如
daily_report_template、alert_template。消息里不要放敏感数据(密码、手机号等)。
消息长度做限制,单条消息不要超过5000字。
用变量存储分隔线和格式符号(如
line_separator = "==================="),统一修改。每条消息加时间戳,方便追溯。
重要消息加入消息编号(每日自增),方便引用。
十二、速查表与常见问题
字符串操作速查:
&:拼接两个字符串\n:换行符len(str):获取字符串长度left(str, n):取左边n个字符right(str, n):取右边n个字符mid(str, start, n):取中间n个字符replace(str, old, new):替换字符串
消息格式化常用分隔符:
-(减号):分隔线=(等号):重要分隔线•(实心圆点):列表项→(箭头):指向关系
常见问题:
- 换行不生效:检查是否正确使用了
\n(反斜杠+n) - 数字拼接后变成奇怪结果:先确认变量类型,数字要先转字符串
- 消息太长被截断:单条消息有长度限制,超长要分条发送
- 编码乱码:检查请求头Content-Type是否设置为application/json;charset=utf-8
作者:林焱
#影刀RPA #RPA教程 #消息格式化 #飞书 #企业微信 #影刀新手 #自动化办公
