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

93 lines 4.07 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.batchCreateChunked = exports.batchCreate = void 0; const axios_1 = __importDefault(require("axios")); const n8n_workflow_1 = require("n8n-workflow"); function cleanTextFields(data) { if (Array.isArray(data)) { return data.map(item => cleanTextFields(item)); } const result = {}; if (data.fields && typeof data.fields === 'object' && !Array.isArray(data.fields)) { const cleanedFields = {}; for (const [key, value] of Object.entries(data.fields)) { if (Array.isArray(value) && value.length > 0 && typeof value[0] === 'object' && value[0].type === 'text') { cleanedFields[key] = value.map(item => item.text).join(''); } else { cleanedFields[key] = value; } } result.fields = cleanedFields; } else { result.fields = data.fields; } for (const [key, value] of Object.entries(data)) { if (key !== 'fields') { result[key] = value; } } return result; } async function batchCreate(accessToken, appToken, tableId, options) { var _a, _b, _c, _d, _e; const url = `https://open.larksuite.com/open-apis/bitable/v1/apps/${appToken}/tables/${tableId}/records/batch_create`; console.log('DEBUG - Batch Create Request:'); console.log('URL:', url); console.log('Options:', JSON.stringify(options, null, 2)); const requestOptions = { method: 'POST', url, headers: { 'Content-Type': 'application/json; charset=utf-8', Authorization: `Bearer ${accessToken}`, }, data: options, }; try { const response = await axios_1.default.request(requestOptions); console.log('DEBUG - Batch Create 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 batch create: ${response.data.msg}`); } const cleanedData = { ...response.data.data }; if (cleanedData.records && Array.isArray(cleanedData.records)) { cleanedData.records = cleanTextFields(cleanedData.records); } return cleanedData; } catch (error) { console.error('DEBUG - Batch Create Error:'); if (axios_1.default.isAxiosError(error)) { console.error('Status:', (_a = error.response) === null || _a === void 0 ? void 0 : _a.status); console.error('Status Text:', (_b = error.response) === null || _b === void 0 ? void 0 : _b.statusText); console.error('Response Data:', JSON.stringify((_c = error.response) === null || _c === void 0 ? void 0 : _c.data, null, 2)); throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Lỗi batch create: ${error.message} - Status: ${(_d = error.response) === null || _d === void 0 ? void 0 : _d.status} - Message: ${JSON.stringify((_e = error.response) === null || _e === void 0 ? void 0 : _e.data)}`, { itemIndex: 0 }); } console.error('Error:', error); throw error; } } exports.batchCreate = batchCreate; async function batchCreateChunked(accessToken, appToken, tableId, records, chunkSize = 500) { const allCreatedRecords = []; for (let i = 0; i < records.length; i += chunkSize) { const chunk = records.slice(i, i + chunkSize); const options = { records: chunk, }; const response = await batchCreate.call(this, accessToken, appToken, tableId, options); if (response.records && Array.isArray(response.records)) { allCreatedRecords.push(...response.records); } } return allCreatedRecords; } exports.batchCreateChunked = batchCreateChunked; //# sourceMappingURL=batchCreate.js.map