python实现钉钉通讯录导出Excel表

Python工具开源专栏

Py0004 python实现钉钉通讯录导出Excel表

  • Python工具开源专栏
  • 前言
  • 目录结构
  • 部分演示
  • 完整代码已在GitHub上开源

前言

  需求来源于公司,需要将钉钉通讯录以Excel表的形式导出到本地,方便定期备份。导出的Excel需要处理钉钉用户兼任多部门的数据问题。功能大致如下几点。(文末有github链接)

  1. 读取钉钉通讯录的用户列表、部门列表。
  2. 支持导出钉钉通讯录到JSON或Excel文档。
  3. 通过requests网络请求获取钉钉通讯录,前提需配置钉钉开放后台微应用。

  工具技术要点:面向对象、网络请求,使用了py库requestsopenpyxl


目录结构

源代码目录结构:

Dingtalk-Book2Excel|——— assets|——— json					# 存放json资源文件|——— xlsx					# 存放excel资源文件|——— components|——— __init__.py			# 初始化模块包文件|——— DingtalkOpenAPI.py	# 调用钉钉通讯录的网络请求工具类|——— ExcelHandle.py		# 导出Excel的工具类|——— JsonHandle.py		# 导出Json的工具类|——— logs|——— utils|——— __init__.py			# 初始化模块包文件|——— utils_const.py		# 常量表|——— utils_logging.py		# log日志工具类|——— dingtalk_book2excel.py	# py主程序源文件|——— readme.md			# |——— LICENSE			# |——— requirements.txt	# py项目的依赖项

执行文件的目录结构:

 |——— dingtalk_book2excel.exe	# 主程序入口

部分演示

导出的JSON格式
1


导出的Excel格式
2



完整代码已在GitHub上开源

源码已在GitHub上开源:Dingtalk-Book2Excel



参考来源:钉钉文档-通讯录管理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2981687.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

W801学习笔记十一:掌机进阶V3版本之硬件改造

经由前面的笔记,我们打造出了一款游戏掌机。 W801学习笔记十:HLK-W801制作学习机/NES游戏机(总结) 然而,考虑到后续的游戏开发,总是忧心容量不足。故而,在正式展开软件开发工作以前,最终进行一下升级改造…

Ai终端程序推荐waveterm

有没有人根据Ai的风口,做智能终端呢?答案是真有,真有专为无缝工作流程而构建的开源 AI 原生终端。它是去年推出的一个产品,专为程序员和开发者设计,比较创新的一点是所有的工作可以在终端完成,开源和可扩展…

Python静态资源库之webassets使用详解

概要 Python webassets库是一个用于管理静态资源的工具,如CSS、JavaScript等,帮助开发者更有效地管理和优化网站的静态文件。本文将介绍如何安装和使用Python webassets库,以及它的特性、基本功能、高级功能、实际应用场景和总结部分。 安装 首先,需要安装Python webasse…

<前端>Electron-builder为公证后的app打更新信息latest.yml

MacOS下,Electron-builder可以很方便的为测试包app打更新信息(latest-mac.yml)。 但是,正式发布的时候,不可能用测试包app,因为还没有进行公证。如何为公证的app打latest-mac.yml呢。 其实观察latest-mac.y…

StartAI智能绘图软件出现“缺少Python运行库”怎么办?

StartAI做为一款国产AI界的新秀,是一款贴合AIGC新手的智能绘图软件。新手安装遇见“缺少Python运行库”怎么办”?小编一招搞定~ 解决方法:手动下载【resource文件】,将文件添加到安装目录下。 点击链接进行手动下载噢~ 确保 Star…

Pytest精通指南(28)钩子函数-测试报告(pytest-html)

文章目录 前言应用场景插件安装参数分析使用方法拓展-定制化报告 前言 在软件开发过程中,测试是确保代码质量的关键环节。 而测试报告则是测试过程中不可或缺的输出物,它为我们提供了关于测试用例执行情况的详细信息,帮助我们快速定位和解决问…

AGON爱攻×保时捷设计第三代OLED超宽屏PD49震撼上市!

一次科技与艺术的审美共振,开启多维度、沉浸式感官之旅! 科技与艺术的融合,引领着美学新时代。4月22日,全球电竞显示器销量冠军品牌AGON爱攻与欧洲最具创造力的设计工作室保时捷设计再度携手,重磅推出AGON爱攻保时捷设…

比亚迪唐EV和唐DM-p荣耀版上市,成为新能源汽车市场中的佼佼者!

随着环保理念的深入人心,新能源汽车市场正迎来前所未有的发展机遇。在这个变革的浪潮中,唐EV和唐DM-p荣耀版的上市无疑为市场注入了新的活力。它们凭借先进的技术、卓越的性能以及豪华配置,成为了新能源汽车市场中的佼佼者。然而,…

数据结构(七)---树

目录 一.树的基本概念 二.树的性质 三.二叉树 1.二叉树的基本概念 2.特殊的二叉树 (1)满二叉树 (2)完全二叉树 (3)二叉排序树 (4)平衡二叉树 3.二叉树的性质 4.完全二叉树…

Maven:配置与使用指南1

https://mvnrepository.com Maven 1.maven简介 不同模块的jar包以及同时设计的功能的微小变化版本; 真实的开发环境:我们将我们的源代码在服务器上重新编译重新打包,工程升级维护过程繁琐 1.Maven是一个项目管理工具,将项目开…

WebSocket的原理、作用、API、常见注解和生命周期的简单介绍,附带SpringBoot示例

文章目录 原理作用客户端 API服务端 API生命周期常见注解SpringBoot示例 WebSocket是一种 通信协议 ,它在 客户端和服务器之间建立了一个双向通信的网络连接 。WebSocket是一种基于TCP连接上进行 全双工通信 的 协议 。 WebSocket允许客户端和服务器在 单个TCP连接上…

【音视频服务】VoIP 推送转 APNs 推送如何设置?

融云控制台 VoIP 设置入口: VoIP 设置 功能说明 针对苹果官方要求收到 VoIP 推送后必须通知给系统 CallKit 框架,如果收到 VoIP 推送后没有报告给 CallKit,iOS 将终止该应用程序(目前只影响用 Xcode 11 打包的 App 运行在 iOS 13 …

Springboot实现国际化以及部署Linux不生效问题

1、在application.properties 添加以下配置: #国际化配置 spring.messages.basenamei18n/messages/messages spring.messages.fallback-to-system-localefalse 2、添加配置文件在 resources目录下 如下图所示: 这个国际化文件命名有个坑,必须…

伙伴匹配(后端)-- 前端初始化

文章目录 用脚手架初始化项目安装依赖启动项目image.png整合组件库Vant 用脚手架初始化项目 Vite官网:https://www.vitejs.net/guide/#scaffolding-your-first-vite-project cmd切换到项目目录下初始化项目 npm init vitelatest安装依赖 npm install启动项目 整…

Axure实现tab页面切换功能

1. 实现效果 2. 实现原理 创建两个标签,并实现点击时选中状态点击时,设置面板状态 3. 实现步骤 3.1 实现可切换的标签 在页面上拖拽两个矩形作为两个tab标签,并命名 tab1 和 tab2 设置每个矩形的边框显示,只显示下边框即可 …

2万字长文:Docker必知必会系列

安装docker 安装: Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。 **Docker CE 分为 **stable&grav…

Python | Leetcode Python题解之第46题全排列

题目: 题解: class Solution:def permute(self, nums):""":type nums: List[int]:rtype: List[List[int]]"""def backtrack(first 0):# 所有数都填完了if first n: res.append(nums[:])for i in range(first, n):# 动…

抽象工厂模式设计实验

【实验内容】 楚锋软件公司欲开发一套界面皮肤库,可以对 Java 桌面软件进行界面美化。为了保护版权,该皮肤库源代码不打算公开,而只向用户提供已打包为 jar 文件的 class 字节码文件。用户在使用时可以通过菜单来选择皮肤,不同的…

【C++】C++的四种类型转换

一、C语言中的类型转换 在C语言中有两种类型转换,隐式类型转换和显示类型转换。 如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回值类型不一致时,就需要发生类型转化。 隐式类型转换&#…

Unity系统学习笔记

文章目录 1.基础组件的认识1.0.组件继承关系图1.1.项目工程文件结构,各个文件夹都是做什么的?1.2.物体变化组件1.2.3.三维向量表示方向1.2.4.移动物体位置附录:使用变换组件实现物体WASD移动 1.3.游戏物体和组件的显示和禁用1.3.1.界面上的操…