python之钉钉审批导出
转载
weixin_30912051
最后发布于2019-03-07 10:38:00
阅读数 209
收藏
发布于2019-03-07 10:38:00
AutoSAR入门到精通系列讲解
将从2019年开始更新关于AutoSAR的知识,从入门到精通,博主xyfx和大家一起进步
钉钉审批导出需要管理员协助配合并且需要参考钉钉开发文档。
1、获取access_token
正常情况下access_token有效期为7200秒
钉钉开发指南:https://open-doc.dingtalk.com/microapp/serverapi2/eev437


appkey | String | 是 | 应用的唯一标识key |
appsecret | String | 是 | 应用的密钥 |
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import urllib.request
import urllib.parse
import requests
import json
import datetime
import time
import os
import sys
import csv
import pandas as pd
#获取access_token
def getToken():
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。

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

-
-
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'))
-
-
next_cursor = result[
'next_cursor']
-
-
headers = [
'.csv格式自定义',
'格式自定义',
'格式自定义']
-
fp = open(
'saas.csv',
'a', encoding=
"utf-8_sig")
-
-
-
-
-
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')
-
-
(title,create_time,value1,value2,value3,value4,value5,value6)
-
-
-
转载于:https://www.cnblogs.com/xfyyxz/p/10488038.html