news 2026/5/9 2:30:39

企业微信API实战:自动化创建部门、批量导入成员与消息推送

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
企业微信API实战:自动化创建部门、批量导入成员与消息推送

前言

企业微信提供了完善的API接口,可以实现部门管理、成员管理、消息推送等自动化操作。很多企业的痛点是:员工入职流程靠手动,部门调整靠Excel导入,通知靠人工转发。

这篇用Python代码实现三个常见场景:自动创建部门、批量导入成员、定向消息推送。

【内文配图1位置】

前置准备

  1. 企业微信管理员权限
  2. 获取access_token(企业ID + 应用Secret)
  3. 安装requests库
import requests import json # 企业微信配置 CORP_ID = "ww1234567890" # 企业ID CORP_SECRET = "your_secret_key" # 应用Secret AGENT_ID = 1000001 # 应用AgentId def get_access_token(): """ 获取企业微信access_token 有效期7200秒,建议缓存复用 """ url = f"https://qyapi.weixin.qq.com/cgi-bin/gettoken" params = { "corpid": CORP_ID, "corpsecret": CORP_SECRET } response = requests.get(url, params=params) result = response.json() if result.get("errcode") != 0: raise Exception(f"获取token失败: {result.get('errmsg')}") return result["access_token"] # 获取token token = get_access_token()

场景一:自动创建部门

def create_department(name, parent_id=1, order=None): """ 创建企业微信部门 Args: name: 部门名称 parent_id: 父部门ID(根部门为1) order: 排序序号 Returns: department_id: 创建成功的部门ID """ url = f"https://qyapi.weixin.qq.com/cgi-bin/department/create" payload = { "name": name, "parentid": parent_id } if order is not None: payload["order"] = order params = {"access_token": token} response = requests.post(url, params=params, json=payload) result = response.json() if result.get("errcode") != 0: raise Exception(f"创建部门失败: {result.get('errmsg')}") return result["id"] # 批量创建部门 departments = [ {"name": "技术研发部", "parent_id": 1, "order": 1}, {"name": "前端开发组", "parent_id": None, "order": 1}, # None会在下面替换 {"name": "后端开发组", "parent_id": None, "order": 2}, {"name": "测试组", "parent_id": None, "order": 3}, ] created_ids = {} parent_id = None for dept in departments: if dept["name"] == "技术研发部": dept_id = create_department(dept["name"], dept["parent_id"], dept.get("order")) parent_id = dept_id created_ids[dept["name"]] = dept_id else: dept["parent_id"] = parent_id dept_id = create_department(dept["name"], dept["parent_id"], dept.get("order")) created_ids[dept["name"]] = dept_id print(f"✅ 部门「{dept['name']}」创建成功,ID: {dept_id}") # 输出: ✅ 部门「技术研发部」创建成功,ID: 2 # ✅ 部门「前端开发组」创建成功,ID: 3 # ✅ 部门「后端开发组」创建成功,ID: 4 # ✅ 部门「测试组」创建成功,ID: 5

【内文配图2位置】

场景二:批量导入成员

def invite_member(userid, name, department_ids, mobile=None, email=None): """ 创建成员并发送邀请 Args: userid: 员工工号(唯一标识) name: 员工姓名 department_ids: 所属部门ID列表 mobile: 手机号 email: 邮箱 """ url = f"https://qyapi.weixin.qq.com/cgi-bin/user/create" payload = { "userid": userid, "name": name, "department": department_ids, "enable": 1 # 启用状态 } if mobile: payload["mobile"] = mobile if email: payload["email"] = email params = {"access_token": token} response = requests.post(url, params=params, json=payload) result = response.json() if result.get("errcode") != 0: raise Exception(f"创建成员失败: {result.get('errmsg')}") return True def batch_import_members(members_data, dept_id): """ 批量导入成员 Args: members_data: 成员数据列表 dept_id: 所属部门ID """ success_count = 0 fail_count = 0 for member in members_data: try: invite_member( userid=member["userid"], name=member["name"], department_ids=[dept_id], mobile=member.get("mobile"), email=member.get("email") ) success_count += 1 print(f"✅ 成员「{member['name']}」导入成功") except Exception as e: fail_count += 1 print(f"❌ 成员「{member['name']}」导入失败: {e}") print(f"\n导入完成:成功 {success_count} 人,失败 {fail_count} 人") # 使用示例 new_members = [ {"userid": "zhangsan", "name": "张三", "mobile": "13800138001", "email": "zhangsan@company.com"}, {"userid": "lisi", "name": "李四", "mobile": "13800138002", "email": "lisi@company.com"}, {"userid": "wangwu", "name": "王五", "mobile": "13800138003", "email": "wangwu@company.com"}, ] batch_import_members(new_members, dept_id=3) # 导入到前端开发组

场景三:定向消息推送

def send_text_message(user_list, content): """ 发送文本消息给指定成员 Args: user_list: 成员userid列表(最多100人) content: 消息文本内容 """ url = f"https://qyapi.weixin.qq.com/cgi-bin/message/send" payload = { "touser": "|".join(user_list), # 用|分隔多个成员 "msgtype": "text", "agentid": AGENT_ID, "text": { "content": content } } params = {"access_token": token} response = requests.post(url, params=params, json=payload) result = response.json() if result.get("errcode") != 0: raise Exception(f"发送消息失败: {result.get('errmsg')}") return True # 使用示例:通知部门会议 send_text_message( user_list=["zhangsan", "lisi", "wangwu"], content="【通知】技术研发部周会,今天下午2:30在3楼会议室B举行,请准时参加。" )

注意事项

  1. access_token有效期7200秒(2小时),建议缓存而非每次请求都重新获取
  2. 接口调用有频率限制,大批量操作建议分批处理
  3. 创建成员时userid必须唯一,不能与已存在成员重复
  4. 企业微信API文档:https://developer.work.weixin.qq.com/document/path/90665

上海华万通信科技有限公司,腾讯系企业软件生态服务商,为企业提供腾讯会议、企业微信、腾讯电子签、DocuSign国际电子签名、Microsoft Teams、Zoom视频会议、AI产品(硅基能量、腾讯云ClawPro/ADP)等一站式解决方案。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 2:28:53

静态博客生成器实战:从Jekyll到GitHub Pages的极简博客搭建

1. 项目概述:一个极简高效的静态博客生成器 如果你厌倦了WordPress的臃肿、Hexo的复杂配置,或者只是想找一个能让你专注于写作,而不是折腾环境的博客工具,那么你很可能已经听说过或者正在寻找类似 lofder/lofder.github.io 这样…

作者头像 李华
网站建设 2026/5/9 2:28:47

推荐1款Word文档题库转Excel表格,搜题刷题神器!

聊一聊现在上个班不容易。没事还要考一考你。考你不算,还要你准备题,考其他人。网上下载的全是word文档格式的。查看起来太麻烦了。今天分享2个小工具,可以将word文档题库转成excel格式并查看。软件介绍1.Word题库转Excel这是我们下载的word文…

作者头像 李华
网站建设 2026/5/9 2:28:21

BurnOver:智能配额代理解决LLM订阅服务的心跳与配额管理难题

1. 项目概述:BurnOver,一个为订阅制LLM服务设计的智能配额代理 如果你正在使用OpenClaw这类AI智能体框架,并且订阅了像Synthetic.new这样提供固定请求次数(比如135次/5小时)的LLM服务,那你很可能遇到过两个…

作者头像 李华
网站建设 2026/5/9 2:28:12

解析器传感器在工业自动化中的关键应用与误差控制

1. 解析器传感器在工业应用中的核心价值解析器传感器作为电机位置检测的关键元件,其工作原理基于电磁感应原理。当励磁绕组(转子)通入高频交流电时,定子上的正弦和余弦绕组会感应出与转子角度相关的电压信号。这种模拟输出特性使其…

作者头像 李华
网站建设 2026/5/9 2:28:05

AMD MI325X加速大模型推理:优化策略与性能分析

1. AMD MI325X硬件平台与大模型推理挑战AMD Instinct MI325X是AMD推出的高性能计算加速卡,基于CDNA 3架构设计,专为AI和高性能计算工作负载优化。每张MI325X显卡配备256GB HBM3e内存,内存带宽达到6.0TB/s,8卡组成的集群可提供总计…

作者头像 李华