历史版本2 :分页取数-分页方式为游标 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 应用场景

用户想要同步钉钉通信录中的用户信息。

API取数-获取部门通讯录数据 中获取钉钉用户信息的方案,只适用于部门下用户数量不超过 100 的场景;若某部门中用户数超过 100,可参考本文方案获取用户信息。

1.2 实现思路

1.2.1 接口说明

本文方案主要使用的是 获取部门用户详情 接口,要使用该接口,需要获取:Query参数(access_token)、Body 参数(dept_id、cursor)。

  • dept_id 通过 循环获取所有部门ID 获得,得到 dept_id 字段。

  • cursor 为分页查询的游标,最开始传 0 ,后续传返回参数中的 nextcursor 值。

1.2.2 方案说明

实现过程如下图所示:

30.png

序号说明
准备工作:参考 循环获取所有部门ID 方案,获得 dept_id 字段
1

为调用 获取部门用户详情 做准备,准备参数access_token、dept_id、cursor(参数列表中添加任务参数)

1)参数赋值节点:获取 access_token

2)数据同步节点:将 dd_dep 的 dept_id 字段写入到 dd_dep_temp 表中;若某部门下用户数小于 100 ,调用 获取部门用户详情 接口一次性将数据取完,应该将本次循环所用的 dept_id 删除,下次循环用下一个 dept_id 取数,dd_dep 表为部门表,后续可与用户表关联,不能随意删除数据,所以新建临时表 dd_dep_temp

3)参数赋值1节点:取 dd_dep_temp 表中 dept_id 字段的第一个值

2

调用 获取部门用户详情 接口,获取用户数据,用户数据如下图所示:

31.png

  • 若has_more非空:将 has_more、nextCursor 输出为参数,为下次循环准备

  • 若has_more为空、userid非空,输出用户信息到 userid_test (用户信息表中)

3

has_more为false,即该部门ID下数据已取完:

1)SQL脚本节点:删除本次循环所用的 dept_id

2)数据转换2节点:参数nextCursor置0

3)参数赋值3节点:将 dd_dep_temp 表的行数输出为参数

  • 参数赋值4节点:若行数小于等于0(dept_id 已取完) ,下次循环的 dept_id 置0 

  • 数据转换3节点:若行数大于0(dept_id 未取完,输出 dept_id ,供下次循环

4

has_more为true,即该部门ID下数据未取完:

参数赋值2节点:依然使用本次循环的 dept_id 做下次循环

2. 操作步骤编辑

2.1 准备工作

参考 循环获取所有部门ID 方案,得到 dd_dep 表,本文方案需要用到 dd_dep 表的 dept_id 字段。

2.2 调用接口前准备

2.2.1 获取 access_token

1)新建定时任务,拖入「参数赋值」节点,