笔记:使用python对飞书用户活跃度统计的一个尝试

说明
一个python练习
代码

import json
import time
import openpyxl
from openpyxl import load_workbook
from datetime import datetime, timedelta
import lark_oapi as lark
from lark_oapi.api.admin.v1 import *def data_r(start_date, end_date):r_data = []client = lark.Client.builder() \.app_id("app-id") \.app_secret("app-secret") \.build()num = 1more = Truetoken = ''while more:if num == 1:request: ListAdminUserStatRequest = ListAdminUserStatRequest.builder() \.user_id_type("user_id") \.department_id_type("department_id") \.start_date(start_date) \.end_date(end_date) \.department_id("id——num") \.page_size(60) \.build()num = num + 1else:request: ListAdminUserStatRequest = ListAdminUserStatRequest.builder() \.user_id_type("user_id") \.department_id_type("department_id") \.start_date(start_date) \.end_date(end_date) \.department_id("id——num") \.page_size(60) \.page_token(token) \.build()num = num + 1response: ListAdminUserStatResponse = client.admin.v1.admin_user_stat.list(request)# 处理失败返回if not response.success():lark.logger.error(f"client.admin.v1.admin_user_stat.list failed, code: {response.code}, msg: {response.msg}, log_id: {response.get_log_id()}, resp: \n{json.dumps(json.loads(response.raw.content), indent=4, ensure_ascii=False)}")returnmore = response.data.has_moretoken = response.data.page_tokenitems_j = lark.JSON.marshal(response.data, indent=4)items = json.loads(items_j)for item in items['items']:o_data = [item['date'], item['user_name'], item['user_id'], item['department_path'], item['suite_active_flag'], item['last_active_time']]r_data.append(o_data)return r_datadef p2excel(wbname, wsname, l_value):wb = load_workbook(wbname)ws = wb[wsname]for a in l_value:ws.append(a)wb.save(wbname)def main():start_date_s = '2024-07-01'end_date_s = '2024-12-31'format_str = '%Y-%m-%d'start_date = datetime.strptime(start_date_s, format_str)end_date = datetime.strptime(end_date_s, format_str)# 数据表表头wb_header = [['时间', '用户名', '用户id', '部门路径', '活跃状态', '最近活跃时间']]nowdt = time.strftime("%Y-%m-%d-%H%M%S", time.localtime())print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), ":创建文件")# 文件名wbname = '飞书活跃用户数据_' + nowdt + '.xlsx'# sheet 名wsname = '活跃用户数据'# 创建表格log_wb = openpyxl.Workbook()log_ws = log_wb.create_sheet(wsname, 0)log_wb.save(wbname)print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), ":加入表头")# 加入表头p2excel(wbname, wsname, wb_header)# 数据插入print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), ":开始数据插入:")while start_date <= end_date:result = []next_date = start_date + timedelta(days=31)if next_date > end_date:next_date = end_dateprint(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), ":", start_date.strftime(format_str), "-", next_date.strftime(format_str))print('获取数据')result = data_r(start_date.strftime(format_str), next_date.strftime(format_str))print('插入数据')p2excel(wbname, wsname, result)print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), ":", start_date.strftime(format_str), "-",next_date.strftime(format_str), '  完成')start_date = next_date + timedelta(days=1)if __name__ == "__main__":main()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

闲谭Scala(1)--简介

1. 背景 这是2024年的冬天&#xff0c;在此之前&#xff0c;我的技术栈已经多年不变。 前端使用JSVue&#xff0c;后端JavaSpringBoot&#xff0c;偶尔写一些小程序使用JSUniapp&#xff0c;偶尔写一些PC客户端使用C#WinForm。 看起来还行&#xff0c;其实Vue一直用的Vue2.x…

低代码开源项目Joget的研究——Joget7社区版安装部署

大纲 环境准备安装必要软件配置Java配置JAVA_HOME配置Java软链安装三方库 获取源码配置MySql数据库创建用户创建数据库导入初始数据 配置数据库连接配置sessionFactory编译下载tomcat启动下载aspectjweaver移动jw.war文件编写脚本运行 测试参考资料 Joget&#xff0c;作为一款开…

Qt 信号和槽 connect()第5个参数

一、Qt connect第5个参数&#xff1a; 1、Qt::AutoConnection *默认值。使用该值则具体连接类型会在信号发送时决定。 *如果接收者和发送者在同一个线程&#xff0c;则自动使用Qt::DirectConnection类型。 *如果接收者和发送者不在同一个线程&#xff0c;则自动使用Qt::QueuedC…

指定Bean加载顺序的能力

springboot遵从约定大于配置的原则&#xff0c;极大程度的解决了配置繁琐的问题。在此基础上&#xff0c;又提供了spi机制&#xff0c;用spring.factories可以完成一个小组件的自动装配功能。 在一般业务场景&#xff0c;可能是不需要关心一个bean是如何被注册进spring容器的&…

后端开发如何高效使用 Apifox?

Apifox 是一个 API 协作开发平台&#xff0c;后端、前端、测试都可以使用 Apifox 来提升团队的工作效率。对于后端开发者而言&#xff0c;Apifox 的核心功能主要包括四个模块&#xff1a;调用 API、定义 API、开发与调试 API 以及生成 API 文档。本文将详细介绍后端开发人员如何…

前端经典面试合集(二)——Vue/React/Node/工程化工具/计算机网络

1. 说说 Vue 中的 Diff 算法 Vue 的 Diff 算法 主要用于优化虚拟 DOM 和实际 DOM 之间的比较过程。它通过以下几种策略来提高性能&#xff1a; 最小化对 DOM 的操作&#xff1a;Vue 通过在内存中构建一个虚拟 DOM 树&#xff0c;在虚拟 DOM 树与真实 DOM 树之间进行比较和更新…

flask后端开发(11):User模型创建+注册页面模板渲染

目录 一、数据库创建和配置信息1.新建数据库2.数据库配置信息3.User表4.ORM迁移 二、注册页面模板渲染1.导入静态文件2.蓝图注册路由 一、数据库创建和配置信息 1.新建数据库 终端中 CREATE DATABASE zhiliaooa DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;2…

极客说|微软新模型:Phi-4 来了

作者&#xff1a;魏新宇 - 微软 AI 全球黑带高级技术专家 「极客说」 是一档专注 AI 时代开发者分享的专栏&#xff0c;我们邀请来自微软以及技术社区专家&#xff0c;带来最前沿的技术干货与实践经验。在这里&#xff0c;您将看到深度教程、最佳实践和创新解决方案。关注「极客…

redis相关数据类型介绍

当然&#xff0c;Redis 作为一个高性能的键值存储系统&#xff0c;提供了多种数据类型来支持不同的应用场景。 1. String&#xff08;字符串&#xff09; • 定义&#xff1a;Redis 最基本的数据类型&#xff0c;用于存储字符串值。 • 操作&#xff1a;SET、GET、INCR、DECR、…

arthas查看拼接好参数的sql, redis, es完整可直接执行的命令

arthas查看拼接好参数的sql, redis, es完整可直接执行的命令 arthas查看sql可执行命令arthas查看redis可执行命令arthas查看es可执行命令相关链接 经常修bug的时候, 拿不到能够执行的命令, 真是太难受了 arthas查看sql可执行命令 # mybatis plus (参数和sql分离了) watch org.…

OpenHarmony怎么修改DPI密度值?RK3566鸿蒙开发板演示

本文介绍在开源鸿蒙OpenHarmony系统下&#xff0c;修改DPI密度值的方法&#xff0c;触觉智能Purple Pi OH鸿蒙开发板演示&#xff0c;搭载了瑞芯微RK3566四核处理器&#xff0c;Laval鸿蒙社区推荐开发板&#xff0c;已适配全新开源鸿蒙OpenHarmony5.0 Release系统&#xff0c;适…

电子应用设计方案74:智能家庭对讲系统设计

智能家庭对讲系统设计 一、引言 智能家庭对讲系统作为智能家居的重要组成部分&#xff0c;为家庭成员之间以及与访客的沟通提供了便捷、高效的方式。本设计方案旨在打造一个功能强大、稳定可靠、操作简便且具有良好扩展性的智能家庭对讲系统。 二、系统概述 1. 系统目标 - 实…

《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》学习笔记——HarmonyOS技术理念

1.2 技术理念 在万物智联时代重要机遇期&#xff0c;HarmonyOS结合移动生态发展的趋势&#xff0c;提出了三大技术理念&#xff08;如下图3-1所示&#xff09;&#xff1a;一次开发&#xff0c;多端部署&#xff1b;可分可合&#xff0c;自由流转&#xff1b;统一生态&#xf…

《医药养生保健报》是正规报刊吗?如何在数据库搜索报刊信息?

在数据库检索报刊的正规性&#xff0c;可以说是论文发表环节中一个重中之重的环节。文章能否被数据库正常收录&#xff0c;很大程度上会影响到毕业、评职称的审核结果。 目前主流认可的三大数据库分别为中国知网、万方数据以及维普资讯。接下来就让我们以《医药养生保健报》为例…

Go主协程如何等其余协程完再操作

在Go语言中&#xff0c;主协程&#xff08;main goroutine&#xff09;可以使用多种方式来等待其他协程完成其操作。常见的方法是使用通道&#xff08;channels&#xff09;和 sync 包中的工具&#xff0c;比如 sync.WaitGroup。以下是这两种方法的示例&#xff1a; 使用 sync…

OSI 七层模型 | TCP/IP 四层模型

注&#xff1a;本文为 “OSI 七层模型 | TCP/IP 四层模型” 相关文章合辑。 未整理去重。 OSI 参考模型&#xff08;七层模型&#xff09; BeretSEC 于 2020-04-02 15:54:37 发布 OSI 的概念 七层模型&#xff0c;亦称 OSI&#xff08;Open System Interconnection&#xf…

代码随想录训练营第三十一天| 56. 合并区间 738.单调递增的数字 贪心总结

56. 合并区间 题目讲解&#xff1a;56. 合并区间 - 力扣&#xff08;LeetCode&#xff09; 讲解链接&#xff1a;代码随想录 和昨天的思路一致 这个是优先用左区间排列 Java代码&#xff1a; class Solution {public int[][] merge(int[][] intervals) {List<int[]> …

使用cmark解析Markdown文档

如果在C或者C项目中解析Markdown&#xff0c;可以使用cmark库。 开发环境 Fedora系统可以直接通过 dnf install cmark-devel来安装cmark的开发库。 安装之后&#xff0c;就可以使用头文件/usr/include/cmark.h 中的函数进行开发&#xff0c;最后在程序中链接-lcmark即可。 …

基于 Python Django 的农产品销售系统的研究与实现

大家好&#xff0c;我是stormjun&#xff0c;今天为大家带来的是基于 Python Django 的农产品销售系统的研究与实现。该系统采用 Python 语言 开发&#xff0c;MySql 作为数据库&#xff0c;系统功能完善 &#xff0c;实用性强 &#xff0c;可供大学生实战项目参考使用。 博主介…

Linux隐藏登录和清除历史命令以及其他相关安全操作示例

隐藏登录 ssh -T rootxxx.xxx.xxx.xxx /bin/bash -i 命令拆解-T &#xff1a;告诉ssh客户端&#xff0c;不要分配一个TTY&#xff08;伪终端&#xff09;root &#xff1a;连接用户xxx.xxx.xxx.xxx &#xff1a;连接的服务器ip地址/bin/bash &#xff1a;在远程服务器上启动…