1.先获取钉钉接口

app_key = 'ttt'
app_secret = 'ttt'
def getToken():url = 'https://oapi.dingtalk.com/gettoken?appkey='+app_key+'&appsecret='+app_secretresponse = requests.get(url=url)result = response.json()errmsg = result['errmsg']print('获取密钥是否成功:',errmsg)try:access_token = result['access_token']except Exception as e:print(e)access_token = ''return access_token
access_token = getToken()

2.获取人员信息

def get_dp(token):"""获取部门列表:param token::return:"""url = "https://oapi.dingtalk.com/department/list?access_token=" + tokendp = json.loads(requests.get(url).text)return dp['department']def get_users(token, dept_id):"""获取部门用户userid列表:param token::param dept_id::return:"""url = "https://oapi.dingtalk.com/user/getDeptMember?access_token={0}&deptId={1}".format(token, dept_id)user_list = json.loads(requests.get(url).text)return user_list['userIds']def get_user_info(token, user_id):"""根据userid获取用户详情:param token::param userId::return:"""url = "https://oapi.dingtalk.com/user/get?access_token={0}&userid={1}".format(token, user_id)info = json.loads(requests.get(url).text)return info

3.获取自己所需的考勤字段,在输出打印的json中可以查看带字段id

def get_report(token):"""获取钉钉考勤字段:param token::return:"""url = "https://oapi.dingtalk.com/topapi/attendance/getattcolumns?access_token=" + tokendp = json.loads(requests.get(url).text)return dp
report=get_report(access_token)
#print(report)

4.根据以上获得json,并处理,填入表格

if __name__ == '__main__':#新建excel表格work_book = xlwt.Workbook(encoding='utf-8')sheet = work_book.add_sheet('sheet')#获取当前时间戳的前一天kk=(datetime.date.today()-datetime.timedelta(days=1)).strftime('%y-%m-%d')kkfrom="20"+kk+" 07:45:00"kkto="20"+kk+" 20:30:00"print(kkfrom)""""下面获取到钉钉员工编号和旷工天数,填入上面的表格"""dp = get_dp(access_token)i=0for d in dp:users = get_users(access_token, d['id'])#print(users)for u in users:payload = {"column_id_list":"95976184","from_date":kkfrom,"to_date":kkto,"userid":u}#根据userid获取用户名x=get_user_info(access_token,u)#根据userid获取当天打卡情况_data = json.dumps(payload)response = requests.post(url=url, data=_data)#处理json获得需要的值xx = handle.json_chuli2(x)h=handle.json_chuli(response.json())#操控表格输入相应信息sheet.write(i, 0, xx)sheet.write(i, 1, h)time.sleep(0.5)i = i + 1work_book.save("nihao.xls")  # 保存文件

5.json处理

#!/usr/bin/env python
# coding: utf-8# In[8]:import pickle
import jsondef json_chuli(jj):#with open(r+jj,"rb") as f:#content = f.read()# In[12]:mydict = jj # 加载Json,存储在mydict# In[14]:myRes = mydict['result']  # 获取result元素# In[22]:tmp = myRes['column_vals']res = tmp[0]['column_vals']  # 获取column_vals元素# In[24]:res[0]['value']return res[0]['value']def json_chuli2(hh):mydict = hhmyRes=mydict['name']return myRes

6.钉钉机器人创建后就获得数据进行相应发送

# -*- coding: utf-8 -*-import json
import requests
import xlrd
import os
import datetimedef sendmessage(message):     #钉钉机器人进行发送url = 'https://oapi.dingtalk.com/robot/send?access_token=webhook'  # 这里填写你自定义机器人的webhook地址HEADERS = {"Content-Type": "application/json ;charset=utf-8"}String_textMsg = {"msgtype": "text","text": {"content": message},"at": {"atMobiles": [""  # 如果需要@某人,这里写他的手机号],"isAtAll": 0  # 如果需要@所有人,这里写1}}String_textMsg = json.dumps(String_textMsg)res = requests.post(url, data=String_textMsg, headers=HEADERS)#print(res.text)class ExcelData():# 初始化方法def __init__(self, data_path, sheetname):# 定义一个属性接收文件路径self.data_path = data_path# 定义一个属性接收工作表名称self.sheetname = sheetname# 使用xlrd模块打开excel表读取数据self.data = xlrd.open_workbook(self.data_path)# 根据工作表的名称获取工作表中的内容(方式①)self.table = self.data.sheet_by_name(self.sheetname)# 根据工作表的索引获取工作表的内容(方式②)# self.table = self.data.sheet_by_name(0)# 获取第一行所有内容,如果括号中1就是第二行,这点跟列表索引类似self.keys = self.table.row_values(0)# 获取工作表的有效行数self.rowNum = self.table.nrows# 获取工作表的有效列数self.colNum = self.table.ncols# 定义一个读取excel表的方法def readExcel(self):# 定义一个空列表datas = []for i in range( self.rowNum):# 定义一个空字典sheet_data = []c_cell = self.table.cell_value(i, 0)a_cell = self.table.cell_value(i, 1)if a_cell=="1":a_cell=c_celldatas.append(a_cell)# 返回从excel中获取到的数据:以列表存字典的形式返回# 去重复值new_li1 = list(set(datas))# 头部插入时间戳kk = (datetime.date.today() - datetime.timedelta(days=1)).strftime('%y-%m-%d')d = "20" + kk + "旷工名单"new_li1.insert(0,d)#list转换为字典z=[]for x in new_li1:z.append(x)print(z)return zif __name__ == "__main__":data_path = "nihao.xls" #获取表格名字sheetname = "sheet"   #获取工资表名get_data = ExcelData(data_path, sheetname)  #调用初始函数datas = get_data.readExcel()    #调用读取函数if __name__ == '__main__':if datas == ['旷工名单']:print("1")else:sendmessage(datas)

python对钉钉考勤旷工的数据填入excel相关推荐

  1. Java 读取 Excel 模板,将数据填入Excel表格,后转换为PDF文件(实用)

    持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情 昨天写了篇较为粗糙的文章,

  2. 2014年去哪儿网笔试题--一个10*10的矩阵(可以理解为棋盘),随时生成一组数据填入矩阵,任何一个位置的数字除4进行计算,按余数着色......

    一个10*10的矩阵(可以理解为棋盘),随时生成一组数据填入矩阵,任何一个位置的数字除4进行计算,按余数着色,余数为0着色为red,1为blue,2为green,3为black,可以理解为生成4中颜色 ...

  3. SpringBoot将数据放入Excel里面通过浏览器直接下载到本地

    SpringBoot将数据放入Excel里面通过浏览器直接下载到本地 说明 依赖 代码 效果 说明 以前做java方面的导出下载的时候,都是先把数据导出到linux服务器里面的某个目录,然后才是通过浏 ...

  4. python爬取沪深所有股票数据并生成Excel文件

    爬取沪深所有股票数据并生成Excel文件 一.分析需求 1.对于沪深两市的各只股票,获取其:'股票代码', '股票名称', '最高', '最低', '涨停', '跌停', '换手率', '振幅', ' ...

  5. Python 读取excel数据并填入excel,批量生成模板

    文章目录 一.问题-来源 二.问题-困难 三.问题-解决 总结 一.问题-来源 前几天,我姐遇见了一个难题:需要从excel表格中不断读取数据并生成个人信息模板 二.问题-困难 1.首先我想到了在wo ...

  6. Python爬虫:正则表达式的应用以及数据保存到excel表

    上一节学习了如何解析网页,说白了就是怎么将一个html文件中的信息提取出来,当然这需要有一定的html基础,这样对于一些标签的使用更加的容易和方便一些.解析来要学习的内容就是上节提到的比较常用而且比较 ...

  7. word列表数据计算机,怎么把树状图的数据填成excel表格-谁会计算机啊,怎么把word里的表格数据转换成簇状......

    excel中生成后的数据透视表如何把树形结构每层的空... 打开Word文档窗口,切换到"插入"功能区.在"插图"分组中单击"图表"按钮. ...

  8. python + Selenium 实现自动化查询问财数据及下载Excel数据并存入到mysql

    问财的数据海量及时,作为量化交易的数据来源也是一种不错的选择,之前也用过一些免费的api,但是数据不是很完整,时效性也不高,试了一下问财觉得很不错,不过下载有次数限制,非会员每天只能导出2次,会员每天 ...

  9. python实现从word固定表格读取数据写入到excel固定位置

    #前提:同事的工作是每天做合同下单,每天要从好多个word中粘贴数据到excel太麻烦了,然后让帮忙看看能不能做一个.exe的程序,每次自动填写,需要手敲的地方在自行填写,也会方便很多,于是有了这篇~ ...

最新文章

  1. Vcastr 2.2 flv 网络播放器 参数设置
  2. IDEA高级用法:集成JIRA、UML类图插件、SSH、FTP、Database管理...
  3. 《JAVA与模式》之装饰模式
  4. WriteFile写UNICODE字符串 TxT显示乱码
  5. spring学习(7):加入log4g日志系统
  6. Dojo学习笔记(7. dojo.dom)
  7. python怎么提高_Python心得--如何提高代码质量
  8. EOS合约开发 - 钱包篇
  9. 论文数模真的好难?那是你还不会Matlab!
  10. 多元线性回归案例(改)
  11. 域控制器组策略:域用户加入域,默认加入本地管理员组
  12. 狼、羊、菜、农夫过河问题 穷举 Python实现
  13. Ubuntu18.04切换镜像源时出错
  14. Oracle启用、禁用触发器
  15. slice,splice,split区别和作用
  16. GPS 车辆导航定位的应用前景
  17. Unity 代码实现形成圆形及形成球形
  18. 金多多看盘新周期还在路上
  19. Python数据转换-有符号短整型转换无符号短整型
  20. 在线观看视频解决音频不同步

热门文章

  1. android 自定义字体 ttf,Android APP支持自定义字体
  2. java跳转kotlin页面_Kotlin:return与跳转
  3. 考研数学1-考试大纲(2022年)
  4. 2017最新申请苹果开发者账号,申请appstore开发者账号,申请app开发者账号,申请苹果企业公司开发者账号
  5. 无法计算机您系统的体验指数,win7无法计算机您系统的windows体验指数如何解决...
  6. 百度飞桨七日深度学习手势识别
  7. 北京大学C语言学习第6天
  8. JAVA作业三:教练与运动员案例
  9. shell连接CentOS启动可视化界面startx
  10. redis的三大模式主从,哨兵和集群