UNPKG

n8n-nodes-larkbase-v3

Version:

n8n node to connect with Larkbase API with UTF-8 support, date filtering, array filter values, text field processing, improved field type handling, pagination fixes, advanced data type conversion, proper date filtering with ExactDate format, updated node

109 lines 4.19 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createFieldMappingUi = exports.mapFieldsToOptions = exports.getAllTableFields = exports.getTableFields = void 0; const axios_1 = __importDefault(require("axios")); const n8n_workflow_1 = require("n8n-workflow"); async function getTableFields(accessToken, appToken, tableId, options = {}) { const queryParams = new URLSearchParams(); if (options.view_id) { queryParams.append('view_id', options.view_id); } if (options.text_field_as_array === true) { queryParams.append('text_field_as_array', 'True'); } if (options.page_token) { queryParams.append('page_token', options.page_token); } const pageSize = options.page_size || 100; queryParams.append('page_size', pageSize.toString()); const url = `https://open.larksuite.com/open-apis/bitable/v1/apps/${appToken}/tables/${tableId}/fields?${queryParams.toString()}`; console.log('DEBUG - Get Fields Request:'); console.log('URL:', url); const requestOptions = { method: 'GET', url, headers: { 'Content-Type': 'application/json; charset=utf-8', Authorization: `Bearer ${accessToken}`, }, }; try { const response = await axios_1.default.request(requestOptions); console.log('DEBUG - Get Fields Response:'); console.log('Status:', response.status); console.log('Data:', JSON.stringify(response.data, null, 2)); if (response.data.code !== 0) { throw new Error(`Lỗi lấy fields: ${response.data.msg}`); } return response.data.data; } catch (error) { if (axios_1.default.isAxiosError(error) && error.response) { const errorMessage = error.response.data && error.response.data.msg ? error.response.data.msg : error.message; throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Lỗi khi lấy fields: ${errorMessage}`); } throw error; } } exports.getTableFields = getTableFields; async function getAllTableFields(accessToken, appToken, tableId, options = {}) { let hasMore = true; let pageToken = ''; const allFields = []; const pageSize = options.page_size || 100; let iterationCount = 0; const maxIterations = 10; while (hasMore && iterationCount < maxIterations) { iterationCount++; const requestOptions = { ...options }; if (pageToken) { requestOptions.page_token = pageToken; } requestOptions.page_size = pageSize; const result = await getTableFields.call(this, accessToken, appToken, tableId, requestOptions); if (result.items && Array.isArray(result.items)) { allFields.push(...result.items); } hasMore = result.has_more; pageToken = result.page_token || ''; if (hasMore && !pageToken) { console.log('WARNING: has_more is true but no page_token provided, exiting loop'); break; } } return allFields; } exports.getAllTableFields = getAllTableFields; function mapFieldsToOptions(fields) { return fields.map(field => ({ name: field.field_name, value: field.field_id, })); } exports.mapFieldsToOptions = mapFieldsToOptions; function createFieldMappingUi(fields) { return fields.map(field => { const fieldParam = { displayName: field.field_name, name: field.field_id, type: 'string', default: '', required: false, description: `Map đến trường "${field.field_name}" trong Larkbase`, }; if (field.ui_type) { fieldParam.description += ` (${field.ui_type})`; } if (field.is_primary) { fieldParam.description += ' - Primary Field'; } return fieldParam; }); } exports.createFieldMappingUi = createFieldMappingUi; //# sourceMappingURL=fields.js.map