今日工作中遇到一个小需求,用户希望导出员工发送企微“客户朋友圈”的统计,但企微后台没有提供导出功能。
进入企微后台发现,展示记录的页面是一个简单的明文参数GET请求:
https://work.weixin.qq.com/wework_admin/customer/sns/getMomentList?lang=zh_CN&f=json&ajax=1&timeZoneInfo%5Bzone_offset%5D=-8&random=xxx&create_ts_begin=1648742400&create_ts_end=1650441841&page=1&limit=10&_d2st=xxx
该请求的返回值是一个包含员工在某时段“客户朋友圈”发送记录的json body,初步想法是获取到json后进行简单处理以获取需要的信息。
由于只有一个随机数校验,可以直接在同一个浏览器session中改参数来获取需要的信息,这里我只修改了limit参数来使所有需要的数据返回在同一个json中:
初步的返回看起来效果不错。保存好json文件后准备进行简单的处理以提取用户感兴趣的字段。
打开终端,使用jq工具进行一下json格式化操作,如果没有安装jq可以直接进行安装,我这里使用homebrew来安装:
brew install jq
研究一下企微返回的json格式发现其实并不复杂,所有数据装载在data对象里,list_data数组对象里为每一条朋友圈的记录,里面再按照实际内容分为几个不同对象,我们使用jq命令逐级拆解即可得到我们需要的信息。
例如这里需要抽取每一条朋友圈发送的员工信息以及对应的部门,这里使用如下jq命令进行格式化输出:
jq -r '.data.list_data[].dispatcher_member | [.name, .english_name,.account,.mainparty_name] | @csv' Sample.json
可以得到一个逗号分隔符格式的最终结果,方便用户进行后续统计和计算。
jq的命令行功能其实非常强大,我这里只是简单研究了一个贴合自己需求的命令,大家可以移步官方手册 jq Manual (development version) 来进一步学习和研究。