ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python之钉钉审批导出

2019-03-07 10:50:20  阅读:862  来源: 互联网

标签:none form get python 导出 component values 审批 import


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

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

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()

  

 

标签:none,form,get,python,导出,component,values,审批,import
来源: https://www.cnblogs.com/xfyyxz/p/10488038.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有