反馈已提交

网络繁忙

API取数-钉钉获取部门列表

  • 文档创建者:Roxy
  • 历史版本:7
  • 最近更新:Roxy 于 2024-07-25
  • 1. 概述

    1.1 应用场景

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

    1.2 接口说明

    接口文档详情参见:获取部门列表获取企业内部应用的access_token

    1.3 实现思路

    由于接口只能获取当前部门的下一级部门基础信息,不支持获取当前部门下所有层级子部门。因此需要依次根据父部门ID循环获取子部门ID。

    • 新建部门ID 数据表,赋值最上层部门ID为 1,开始循环

    • 获取部门access_token

    • 根据父部门 ID 循环取出所有部门ID

    • 设置停止循环条件,得到部门ID信息表

    FineDataLink 中的数据处理过程,详情参见:https://demo.finedatalink.com/ 「API取数-钉钉接口-获取所有部门ID(循环替代递归)

    2. 操作步骤

    2.1 新建数据表

    由于接口只能获取当前部门的下一级部门基础信息,不支持获取当前部门下所有层级子部门。因此需要依次根据父部门ID循环获取子部门ID。

    使用 SQL 脚本,新建数据表 dd_dep 存放 获取部门列表 接口返回值,便于后续对父部门 ID 进行循环获取子部门 ID;

    新建数据表 dd_depid 存放 depid 字段,便于后续作为参数写入接口,以及判断是否停止循环。

    同时在dd_depid 表中插入一行 为1的数据,便于开始取数(钉钉接口 最上层部门ID默认为1)。

    CREATE TABLE
      IF NOT EXISTS `demotest`.`dd_dep` (
        `auto_add_user` varchar(255) NULL DEFAULT NULL,
        `create_dept_group` varchar(255) NULL DEFAULT NULL,
        `dept_id` varchar(255) NOT NULL,
        `name` varchar(255) NULL DEFAULT NULL,
        `parent_id` varchar(255) NULL DEFAULT NULL,
        `taskId` varchar(255) NULL DEFAULT NULL,
        PRIMARY KEY (`dept_id`)
      ) ENGINE = InnoDB CHARACTER
    SET
      = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

    CREATE TABLE
      IF NOT EXISTS `demotest`.`dd_depid` (`dept_id` varchar(255) NULL DEFAULT NULL) ENGINE = InnoDB CHARACTER
    SET
      = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
    DELETE FROM dd_dep;
    DELETE FROM dd_depid;
    INSERT INTO dd_depid (dept_id) VALUES ('1');

    2.2 获取 accesstoken

    使用 获取企业内部应用的access_token 接口获取 access_token。

    使用参数赋值,输入 API 信息,获取token,如下图所示:

    并将取出的数据设置为参数。如下图所示:

    2.3 根据父ID循环取出所有部门ID

    由于需要循环,因此使用循环容器,然后拖入数据转换,如下图所示:

    进入数据转换编辑界面,从 2.1.1 节落库的 dd_depid 数据表中读取部门ID,如下图所示:

    使用参数输出将 dept_id 字段设置为参数 depIds,便于后续作为输入接口的参数,如下图所示:

    由于后续设置让循环停止的条件为 dd_depid 数据表中 dept_id 字段无数据,因此需要在传入dept_id 参数后,删除 dd_depid 数据表中当前循环传入的参数,所以需要使用 SQL 脚本,如下图所示:

    注:此时参数 depIds 已经输出,删除该数据不影响参数后续的使用。

    DELETE FROM
      `demotest`.`dd_depid`
    WHERE
       dept_id = '${depIds}'

    新建数据转换,进入编辑界面,使用 API 输入算子,使用 获取部门列表 接口将dd_depid 数据表中 depIds 参数传入,取出指定部门ID对应子部门ID等数据,如下图所示:

    数据预览即可看到取出的数据,如下图所示:

    将取出的 JSON 数据解析,如下图所示:

    将可能为 NULL 值的 dept_id 数据剔除掉,如下图所示:

    将取出的父部门ID 对应的子部门ID 数据信息落库至 2.1 节创建的 dd_dep 数据表,也就是我们最终取出的全量部门ID 数据,如下图所示:

    为了保证落库的最终数据表dept_id 字段数据唯一,因此设置为逻辑主键,并设置冲突策略,如下图所示:

    由于循环容器中 SQL 脚本需要删除传入的dept_id 字段,以便后续进行循环终止判断,因此需要将dept_id 写入之前构造的 dd_depid数据表中,只保留 dept_id 字段,如下图所示:

    2.4 设置停止循环条件

    新增数据转换节点,对 dd_depid 字段进行计数,如下图所示:

    并将计数结果作为参数输出,如下图所示:

    设置循环容器的执行条件为当参数 count 值大于 0 ,即还有dd_depid 字段可循环,当 dd_depid 数据表无数据可循环,则停止循环取数,如下图所示:

    运行任务后,即可看到 dd_dep 数据表中取出所有的部门ID 信息,如下图所示:

    1717661041476037.png



    附件列表


    主题: 数据开发-定时任务
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持