UNPKG

apass-opensdk-hugong

Version:

飞书Apass低代码平台-飞书开放平台-相关的接口整合和常用的方法整合

241 lines (163 loc) 5.55 kB
# apass-opensdk-hugong > 面向飞书低代码平台(APASS)开发者的 Node.js SDK,提供常用工具函数与便捷封装。 --- ## 目录 - [简介](#简介) - [安装](#安装) - [快速开始](#快速开始) - [常用工具](#常用工具) - [时间相关](#时间相关) - [安全取值](#安全取值) - [线程睡眠](#线程睡眠) - [数组操作](#数组操作) - [文件操作(APass 相关)](#文件操作apass-相关) - [文件上传](#文件上传) - [文件下载](#文件下载) - [CSV 解析](#csv-解析) - [Excel 解析](#excel-解析) - [Excel 导出](#excel-导出) - [多语言工具](#多语言工具) - [交流学习](#交流学习) --- ## 简介 **apass-opensdk-hugong** 是一个 Node.js SDK,提供了一系列常用的功能封装。 **适用人群:** - 飞书低代码平台(APASS)开发人员 - 传统 Node.js 开发人员 --- ## 安装 在飞书低代码平台(云函数)中安装: > 依赖管理 → 右侧 → 搜索:`apass-opensdk-hugong` > ⚠️记得版本要升级到最新版本 --- ## 快速开始 ```javascript const Hugong = require('apass-opensdk-hugong'); // 初始化(主函数内),函数外不需要入参 logger const hg = new Hugong(logger); // 也可以单独初始化 logger 模块 hg.setLogger(logger); ``` --- ## 常用工具 ### 时间相关 ```javascript // 记录时间 hg.newTime(); // 打印运行时间 hg.printTime(); ``` ### 安全取值 ```javascript // 安全的深层取值,避免 undefined 报错 hg.toValue({ a: { b: { c: 'value' } } }, 'a.b.c', 'default value'); ``` ### 线程睡眠 ```javascript // 线程睡眠(毫秒) await hg.sleep(2000); ``` ### 数组操作 #### 1. 生成指定范围的数组 ```javascript const rangeValue = hg.utils.range(5, 50, 3); // => [ 5, 8, 11, 14, 17, 20, 23, 26, 29, 32, 35, 38, 41, 44, 47, 50 ] ``` #### 2. 数组分块 ```javascript const chunkValue = hg.utils.chunkAll(rangeValue, 5); // => [ [ 5, 8, 11, 14, 17 ], [ 20, 23, 26, 29, 32 ], [ 35, 38, 41, 44, 47 ], [ 50 ] ] ``` #### 3. 数组分块(输出方式一) ```javascript hg.utils.splitArray([/* ... */], 5); // => [ [5, 8, 11, 14, 17], [20, 23, 26, 29, 32], [35, 38, 41, 44, 47], [50] ] ``` #### 4. 数组分块(输出方式二,推荐大数据量使用) 每次输出指定条数,处理完成后继续下次执行: ```javascript await hg.utils.splitArray([/* ... */], 10, async (items) => { // do something }); ``` #### 5. 移除重复项 ```javascript hg.utils.unique([1, 2, 3, 1, 2, 3]); // => [1, 2, 3] ``` --- ## 文件操作(APass 相关) ### 文件上传 **从网络下载文件后上传到飞书租户空间,返回上传后的文件信息:** ```javascript // 基础用法 await hg.utils.file.downloadFileToUpload(url); // 带鉴权 header await hg.utils.file.downloadFileToUpload(url, { Authorization: `...` }); ``` **保存数据到本地环境:** ```javascript // 保存数据到本地环境中,方便查看接口返回的数据 hg.utils.file.saveDataToEnv(data, path); ``` ### 文件下载 **从飞书租户空间下载文件到本地环境:** ```javascript const file_info = { id, mime_type, /* ... */ }; const file_path = '/tmp/xxx'; // 可选,不填则默认当前时间戳 await hg.utils.file.downloadFileToTmp(file_info, file_path); ``` **Token 文件下载:** ```javascript const file_info = { token, mime_type, /* ... */ }; await hg.utils.file.downloadFileByToeknToTmp(file_info, file_path); ``` ### CSV 解析 > `file_path` 必须是本地环境的文件路径(如 `/tmp/aaa.csv`),可先用 `downloadFileToTmp` 下载文件到本地环境。 **示例 1:读取完成后返回数组(小文件推荐)** ```javascript const list = await hg.utils.file.csvRead(file_path); ``` **示例 2:逐行回调(超过 5000 条建议使用,防止内存溢出)** ```javascript await hg.utils.file.csvRead(file_path, async (row) => { // do something }); ``` ### Excel 解析 > `file_path` 必须是本地环境的文件路径(如 `/tmp/aaa.xlsx`),可先用 `downloadFileToTmp` 下载文件到本地环境。 ```javascript const list = hg.utils.file.xlsxReaderAll(file_path); ``` > **注意:** 建议小文件使用(10M 以下),如果是大文件(10M 以上)建议转换成 CSV 使用上面的方法。亲自测试 10 万条 CSV 读取正常。 ### Excel 导出 ```javascript await hg.utils.file.exportExcelFile(records, fields, fileName); ``` **`fields` 列配置说明:** | 参数 | 类型 | 必填 | 说明 | | :--- | :--- | :---: | :--- | | `key` | `string` | ✅ | 列唯一标识(对应数据字段键) | | `header` | `string` | ✅ | 列表头显示文本 | | `render` | `Function` | - | 自定义渲染函数 `(value, record) => value` | | `enums` | `Array` | - | 枚举配置,格式如 `[{ name: [{ language_code, text }], api_alias }]` | | `type` | `string` | - | 列类型:`'Date'` \| `'Float'` \| `'Region'` | --- ## 多语言工具 **对象数据新增多语言对象:** 将开放平台返回的多语言对象转换为 `application.constants.type.Multilingual` 格式: ```javascript // 数组形式 hg.toMultilingualByOpenPlatform([ { lang: 'en-US', value: 'Regular' }, { lang: 'zh-CN', value: '正式' } ]); // 多参数形式 hg.toMultilingualByOpenPlatform(zh, en); // 将多语言对象提取文本 ss.toTextByMultilingual([]) ``` --- ## 交流学习 > 从事飞书低代码平台(APASS)开发 3 年,欢迎交流学习 🎉 **微信:** `IAMRuiyu`