UNPKG

n8n-nodes-feishu-lite

Version:
236 lines 8.89 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const NodeUtils_1 = __importDefault(require("../../../help/utils/NodeUtils")); const RequestUtils_1 = __importDefault(require("../../../help/utils/RequestUtils")); exports.default = { name: '批量保存字段', value: 'bitable:table:field:batchSave', description: '只支持增量保存字段,最大100个', order: 60, options: [ { displayName: '多维表格 Token', name: 'app_toke', type: 'string', required: true, default: '', description: '多维表格 App 的唯一标识。', }, { displayName: '多维表格 ID', name: 'table_id', type: 'string', required: true, default: '', description: '多维表格数据表的唯一标识。', }, { displayName: '字段定义方式', name: 'type', type: 'options', default: 'field', options: [ { name: 'Field', value: 'field', }, { name: 'JSON', value: 'json', } ] }, { displayName: '字段列表', name: 'fieldObject', type: 'fixedCollection', required: true, default: {}, typeOptions: { multipleValues: true, }, options: [ { name: 'fields', displayName: '字段列表', values: [ { displayName: '字段名称', name: 'field_name', type: 'string', default: '', required: true, }, { displayName: '字段类型', name: 'type', type: 'options', options: [ { name: '文本', value: 1, }, { name: '数字', value: 2, }, { name: '单选', value: 3, }, { name: '多选', value: 4, }, { name: '日期', value: 5, }, { name: '复选框', value: 7, }, { name: '人员', value: 11, }, { name: '电话号码', value: 13, }, { name: '超链接', value: 15, }, { name: '附件', value: 17, }, { name: '单项关联', value: 18, }, { name: '公式', value: 20, }, { name: '双向关联', value: 21, }, { name: '地理位置', value: 22, }, { name: '群组', value: 23, }, { name: '创建时间', value: 1001, }, { name: '最后更新时间', value: 1002, }, { name: '创建人', value: 1003, }, { name: '修改人', value: 1004, }, { name: '自动编号', value: 1005, }, ], default: 1, }, { displayName: '字段扩展属性', name: 'data', type: 'json', default: '{}', description: '会自动合并,参考:https://open.feishu.cn/document/server-docs/docs/bitable-v1/app-table-field/create#requestBody', }, ], }, ], displayOptions: { show: { type: ['field'] } } }, { displayName: '请求体JSON', name: 'body', type: 'json', required: true, default: '[{"field_name":"test", "type": 1}]', description: '参考:https://open.feishu.cn/document/server-docs/docs/bitable-v1/app-table-field/create#requestBody', displayOptions: { show: { type: ['json'] } } }, ], async call(index) { const app_token = this.getNodeParameter('app_toke', index); const table_id = this.getNodeParameter('table_id', index); const type = this.getNodeParameter('type', index); let fieldList = []; if (type === "field") { const fieldObject = this.getNodeParameter('fieldObject', index); fieldList = NodeUtils_1.default.getNodeFixedCollection(fieldObject, 'fields'); } else { fieldList = NodeUtils_1.default.getNodeJsonData(this, "body", index); } const newFieldList = []; for (const item of fieldList) { let newItem = { ...item, ...(item.data ? JSON.parse(item.data) : {}), }; delete newItem.data; newFieldList.push(newItem); } const res = await RequestUtils_1.default.request.call(this, { method: 'GET', url: `/open-apis/bitable/v1/apps/${app_token}/tables/${table_id}/fields`, qs: { page_size: 100, }, }); const nowFieldList = res.data.items; const noExistFieldList = []; for (const item of newFieldList) { let flag = nowFieldList.find((f) => f.field_name === item.field_name); if (!flag) { noExistFieldList.push(item); } } let promises = []; for (const item of noExistFieldList) { promises.push(RequestUtils_1.default.request.call(this, { method: 'POST', url: `/open-apis/bitable/v1/apps/${app_token}/tables/${table_id}/fields`, body: item, })); } await Promise.all(promises); return { addFields: noExistFieldList, oldFields: nowFieldList, }; }, }; //# sourceMappingURL=BitableTableFieldBatchSaveOperate.js.map