前言
企业微信提供了完善的API接口,可以实现部门管理、成员管理、消息推送等自动化操作。很多企业的痛点是:员工入职流程靠手动,部门调整靠Excel导入,通知靠人工转发。
这篇用Python代码实现三个常见场景:自动创建部门、批量导入成员、定向消息推送。
【内文配图1位置】
前置准备
- 企业微信管理员权限
- 获取access_token(企业ID + 应用Secret)
- 安装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举行,请准时参加。" )注意事项
- access_token有效期7200秒(2小时),建议缓存而非每次请求都重新获取
- 接口调用有频率限制,大批量操作建议分批处理
- 创建成员时userid必须唯一,不能与已存在成员重复
- 企业微信API文档:https://developer.work.weixin.qq.com/document/path/90665
上海华万通信科技有限公司,腾讯系企业软件生态服务商,为企业提供腾讯会议、企业微信、腾讯电子签、DocuSign国际电子签名、Microsoft Teams、Zoom视频会议、AI产品(硅基能量、腾讯云ClawPro/ADP)等一站式解决方案。