python格式化输出 xz_python之钉钉审批导出

news/2025/2/26 13:38:35

钉钉审批导出需要管理员协助配合并且需要参考钉钉开发文档。

1、获取access_token

正常情况下access_token有效期为7200秒

钉钉开发指南:https://open-doc.dingtalk.com/microapp/serverapi2/eev437

91cec6557d9b98c01e3d615692f787b9.png

9f6390d43e7b501041c792a638ec35a1.png

appkey

String

应用的唯一标识key

appsecret

String

应用的密钥

#!/usr/bin/python3#-*- coding: utf-8 -*-

importurllib.requestimporturllib.parseimportrequestsimportjsonimportdatetimeimporttimeimportosimportsysimportcsvimportpandas as pd#获取access_token

defgetToken():

appkey= '钉钉后台获取,需管理员协助'appsecret= '钉钉后台获取,需管理员协助'headers={'Content-Type': 'application/json','User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36'}

url= 'https://oapi.dingtalk.com/gettoken?appkey=%s&appsecret=%s' %(appkey,appsecret)

req= urllib.request.Request(url,headers=headers)

result=urllib.request.urlopen(req)

access_token=json.loads(result.read())return access_token['access_token']

accesstoken= getToken()

2、批量获取审批实例id

钉钉获取审批实例文档:https://open-doc.dingtalk.com/microapp/serverapi2/hh8lx5

名称

类型

是否必须

示例值

描述

process_code

String

必须

PROC-FF6YR2IQO2-NP3LJ1J0SO4182NKX26K3-3N23J-PB

流程模板唯一标识,可在OA管理后台编辑审批表单部分查询

start_time

Number

必须

1496678400000

开始时间。Unix时间戳

end_time

Number

可选

1496678400000

结束时间,默认取当前时间。Unix时间戳

size

Number

可选

10

分页参数,每页大小,最多传10,默认值:10

cursor

Number

可选

0

分页查询的游标,最开始传0,后续传返回参数中的next_cursor值,默认值:0

userid_list

String

可选

manager1

发起人用户id列表,用逗号分隔,最大列表长度:10

1)由于钉钉限制I/O所以每次最多导出10条数据。

2)由于钉钉安全机制,需填写授权公网出口IP。

e0281c8434ddb97cef4b81362fa891ab.png

3、需通管理员获取相关服务的code

b29e1abe9119154f4f9d01cfdd6cdb24.png

cursor1 = '0'

data = { '钉钉后台获取,需管理员配合', 'start_time':'1538326800', 'size':'10', 'cursor':'1'}

data1 = json.dumps(data).encode(encoding='UTF8')

headers1 = { 'Content-Type': 'application/json', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36'}

url1 = 'https://oapi.dingtalk.com/topapi/processinstance/list?access_token=%s' % (accesstoken)

req = urllib.request.Request(url = url1,headers = headers1,data = data1)

result = urllib.request.urlopen(req)

dic = json.loads(result.read())

4、切片排版,导出格式为.csv

list1 = (dic.get('result','none').get('list','none'))

result = dic['result']

next_cursor = result['next_cursor']

print(next_cursor)

headers = ['.csv格式自定义','格式自定义','格式自定义']

fp = open('saas.csv', 'a', encoding="utf-8_sig")

f_csv = csv.writer(fp)

f_csv.writerow(headers)

for list2 in list1:

title = list2['title']

create_time = list2['create_time']

form_component_values = list2['form_component_values']

name1 = form_component_values[1].get('name','none')

value1 = form_component_values[1].get('value','none')

name2 = form_component_values[2].get('name','none')

value2 = form_component_values[2].get('value','none')

name3 = form_component_values[3].get('name','none')

value3 = form_component_values[3].get('value','none')

name4 = form_component_values[3].get('name','none')

value4 = form_component_values[4].get('value','none')

name5 = form_component_values[5].get('name','none')

value5 = form_component_values[5].get('value','none')

name6 = form_component_values[6].get('name','none')

value6 = form_component_values[6].get('value','none')

rows = [

(title,create_time,value1,value2,value3,value4,value5,value6)

]

f_csv.writerows(rows)

fp.close()


http://www.niftyadmin.cn/n/4747365.html

相关文章

cas client java_CAS java client2.1.1 在Tomcat5.5.16下bug的解决

2006-07-19 10:17 | taole版主我按照你的方法试过 ,但是还是会出到访问应用程序后提示输入验证用户名和密码以后就会出现错误页面,异常如下:*************************************HTTP Status 500 ----------------------------------------…

java base64压缩_Base64和Zip数据压缩与解压

压缩图片数据,解压图片数据public class TestZCompress {public static void main(String[] args) {try {File file new File("D://haha.jpg");if (file.exists()) {InputStream in new FileInputStream("D://haha.jpg");byte[] buf new byt…

ast java override_Java调用groovy及groovy中如何使用springBean

一、概述Groovy is a multi-faceted language for the Java platform.Apache Groovy是一种强大的、可选的类型化和动态语言,具有静态类型和静态编译功能,用于Java平台,目的在于通过简洁、熟悉和易于学习的语法提高开发人员的工作效率。它可以…

ElGamal加密算法基础到实现详解

先从数学基础开始 群 群是一个集合G,连同一个运算 "",它结合任何两个元素 a 和 b 而形成另一个元素,记为 a b。符号 "" 是对具体给出的运算,比如加法的一般的占位符。要具备成为群的资格,这个集…

java 负责类型转换_java中数据类型转换

JAVA中常用数据类型转换函数虽然都能在JAVA API中找到,整理一下做个备份。string->byteByte static byte parseByte(String s)byte->stringByte static String toString(byte b)char->stringCharacter static String to String (char c)string->ShortSh…

java引用链的root对象_2020-10-04:java中GC Root 对象有哪些?

福哥答案2020-10-04:#福大大架构师每日一题#简单回答:1.局部变量。2.静态引用的对象。3.常量引用的对象。4.JNI引用的对象。中级回答:1.虚拟机栈(栈帧中的本地变量表)中引用的对象;各个线程调用方法堆栈中使用到的参数、局部变量、…

java前后获取数据方法_java正则获取字符前后数据

使用Java正则获取指定字符前或者后数据:代码如下:public class RegTest {//字符串截取public static String regComp(String item) {String num "";// 替换中文String reg "[\\u4e00-\\u9fa5]";//截取λ|入后面数字String comp1 …

编写一个java类和一个jsp页面_编写一个JAVA类和一个JSP页面把下列信息封装到3个Student对象里...

编写一个JAVA类和一个JSP页面把下列信息封装到3个Student对象里编写一个 JAVA 类和一个 JSP 页面,把下列信息封装到 3 个 Student 对象里,再把每个对象放到一个 ArrayList 对象里,再利用 ArrayList 对象在 JSP 页面的表格中显示所下表所示的信…