前言:

钉钉有个开发平台,通过API可以开发自己企业内部应用,钉钉开发文档顺序写的有点乱,花了挺长时间才看懂,我写了一个python脚本来获取考勤记录,当然能做的不止这些,可以删除公司成员,修改部门,瞎发通知等等。。。(这是上路的新手,大神忽略。)

一、准备 

钉钉API地址: https://open-doc.dingtalk.com/docs/doc.htm?spm=0.0.0.0.L9JL3j&treeId=367&articleId=107520&docType=1

企业自建应用开发流程和企业简易开发教程,需要获取钉钉管理员权限,可问公司组织管理员。

二、python脚本

1.安装python

官网了解下:https://www.python.org/downloads/

了解完下载下

下载完安装下(路径注意不要中文)。

2.安装pymysql库

CDM命令pip install PyMySQL。如图:

:\Users\Administrator> pip install PyMySQL
Collecting PyMySQLDownloading PyMySQL-0.7.11-py2.py3-none-any.whl (78kB)51% |████████████████▋               | 40kB 109kB/s eta 0:0    64% |████████████████████▊       | 51kB 112kB/s eta    77% |█████████████████████████      | 61kB 135kB/s    90% |█████████████████████████████| 71kB 152    100% |████████████████████████████████| 81kB 163kB/sInstalling collected packages: PyMySQL
Successfully installed PyMySQL-0.7.11C:\Users\Administrator>

3.脚本编写

1).先调用API获取到token

def getaccseetoken():request = dingtalk.api.OapiGettokenRequest("https://oapi.dingtalk.com/gettoken")request.corpid = "你的cropid"request.corpsecret = "你的corpsecret "f = request.getResponse()access_token = f['access_token']return access_token

2).有了token后通过API获取用户UserId

def get_userid(access_token):request = dingtalk.api.OapiAttendanceListscheduleRequest('https://oapi.dingtalk.com/topapi/attendance/listschedule')request.workDate = str(dt.strftime(dt.now(), '%Y-%m-%d %H:%M:%S'))f = request.getResponse(access_token)userid = list(map(lambda x: x["userid"], f['result']['schedules']))userid = list(set(userid))return userid

3).根据API获取到打卡详情(钉钉有人数限制,此处已做处理)

def get_attendence_listrecord(userid, access_token, day):request = dingtalk.api.OapiAttendanceListRecordRequest('https://oapi.dingtalk.com/attendance/list')request.workDateFrom = str(dt.now() - day * timedelta(days=1))request.workDateTo = str(dt.now())request.userIdList = useridrequest.offset = 0request.limit = 50f = request.getResponse(access_token)h = []h.append(f)while ('hasMore', True) in f.items():request.offset = request.offset+request.limitf = request.getResponse(access_token)h.append(f)return h

4).之后你就可以拿数据存入数据库了(注意处理返回system的数据)

def get_value(userid_in, access):l = []if len(userid_in)>50:users = []start = 0end = 49while end<len(userid_in):users.append(userid_in[start:end])start +=49end = start + 50users.append(userid_in[start:end])for userid_in_in in users:reponse = get_attendence_listrecord(userid_in_in, access, day=0)if reponse[0]['errmsg'] != 'ok':global access_tokenaccess_token = getaccseetoken()reponse = get_attendence_listrecord(userid_in_in, access_token, day=0)for respose in reponse[0]['recordresult']:if respose['sourceType'] != 'SYSTEM':value = (respose['userId'], respose['checkType'], dt.fromtimestamp(int(respose['userCheckTime']) / 1000),respose['locationResult'])l.append(value)return ldb = pymysql.connect('数据库地址', '用户名', '密码', '库名', charset="utf8")
cursor = db.cursor()
query = """insert into 表名 (字段名, 字段名,字段名,字段名) values (%s,%s,%s,%s)"""
valu = get_value(userid, access_token)def insert():value = get_value(userid, access_token)for record in value:cursor.execute(query, record)db.commit()

钉钉API考勤打卡记录获取并存入数据库(python)相关推荐

  1. 钉钉API考勤打卡记录获取(PHP + JS)

    前言: 钉钉有个开发平台,通过API可以开发自己企业内部应用,钉钉开发文档顺序写的有点乱,花了挺长时间才看懂,我建立一个php后端以及一个单独网页(不运行在钉钉上)来获取考勤记录,当然能做的不止这些, ...

  2. 钉钉怎么设置考勤打卡规则

    1.首先在电脑上登陆钉钉后台,然后点击如图所示的钉钉考勤打卡 钉钉后怎么设置考勤打卡规则? 2.比如一个公司生产型企业 互联网部门上班时间是 周一到周五上班时间 8:30-5:30 周六上班 8:30 ...

  3. 从钉钉后台对接考勤打卡信息(仅供参考)

    # -*- coding: utf-8 -*- import requests, logging, json, openpyxl, os, time #官方下载SDK import dingtalk. ...

  4. js解析EXCEL考勤打卡记录

    公司的打卡记录是直接发我们的.要自己一条条核对,相当困惑 于是自己写了个导入EXCEL道勤记录的,友好查看打卡记录. 导入后,输入姓名,点击查询 <!doctype html> <h ...

  5. 小程序实现图片上传,并获取fileID存入数据库

    小程序在上传图片时,需要获取相册图片或者相机拍照(choosemedia),得到数据后会在使用端建立一个缓存路径,获取到缓存路径以后,使用wx.uploadfile上传,如果按照正常的步骤进行,upl ...

  6. 【嵌入式】第一次大作业_记录环境温度并存入数据库

    第一次嵌入式课程大作业 一年级下的嵌入式期末考试,当时做完忘记录一下了,现在重新上传 课程要求: (1) 记录24小时内 当前环境的 温.湿度.存入数据库 (每分钟记录1次): (2) 如有人靠近树莓 ...

  7. 根据excel列动态创建mysql表_根据数据库字段动态生成excel模版下载,上传模版获取数据存入数据库(poi 反射)...

    环境:mysql5.7.28 java8 Spring boot 2.2.4 mybatis-plus3.10 动态:根据需求,用户可以选择对应的字段生成excle模版 下载 poi 反射:poi是e ...

  8. JAVA 对接钉钉API(人员、部门、官方智能工作流)20210527

    前言 应公司要求,公司人事HR系统需要对接钉钉考勤数据,所以需要获取钉钉的打卡记录.出差.外出.请假.调岗的数据,然后转换成HR系统数据. 对接前准备 创建应用 1.首先需要管理员登录钉钉开放平台,创 ...

  9. 对接钉钉消息通知_接入钉钉API发送企业消息

    工作中有个需求,是要把录入的销售机会由系统自动分配给销售,然后对接钉钉给销售人员发送企业消息,通知他进行跟单. 参考资料 1. 获取Access_Token Access_Token是企业访问钉钉开放 ...

最新文章

  1. GEO,以GSM2309041这套数据为例,找到需要的sra数据,SRX2159543
  2. mysql udf提权_mysql——udf提权
  3. 电子商务之 网店客服中心服务用语规范
  4. linux postgresql默认安装目录,PostgreSQL for Linux 安装方式
  5. 剑指 Offer 51-----59
  6. 卸载一直在创建还原点_如何创建系统还原点以及如何恢复?
  7. 在Sharepoint 2010中使用ReportViewer控件展示RDLC报表
  8. 中山大学Delphi视频教程 共51课
  9. dtreeviz 画树模型
  10. Maven学习(四)Maven 命令行选项
  11. HotSpot虚拟机对象揭秘
  12. 《小样本学习研究综述》赵凯琳等 Survey on Few-shot Learning,文献阅读笔记
  13. 趣开门APP、微信开门小程序,让开门更简单,更有趣!
  14. 计算机 桌面 休眠,电脑如何设置休眠的时间?
  15. 【golang】go app 优雅关机 Graceful Shutdown How?
  16. 图片工具GraphicsMagick的下载安装配置使用
  17. 应用上云2小时烧掉近50万,创始人:差点破产
  18. python中文词频排序_python统计词频并排序
  19. 安裝oracle坑之---安装界面乱码,全都是框框
  20. 网络版收银系统服务器更新是什么意思,POS收银系统也需要更新的五大理由

热门文章

  1. 创客匠人知识付费系统为教培机构拓宽变现渠道
  2. 公安人员审问四名窃贼嫌疑犯
  3. javascript js jsp接收servlet传送的数组ArrayList的一种简单的非ajax方法
  4. IDEA常用配置汇总
  5. iOS 卡顿原因及优化思路
  6. 替换读到的文件中的某一元素 pd 格式
  7. 5. Django templates模板 (一)
  8. 蚂蚁金服张洁:基于深度学习的支付宝人脸识别技术解秘
  9. 使用windows为Android手机进行瘦身
  10. ios小米手环6最新固件获取auth_key更换第三方表盘