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.batchUpdateChunked = exports.batchUpdate = 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 batchUpdate(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_update`; console.log('DEBUG - Batch Update 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 Update 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 update: ${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 Update 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 update: ${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.batchUpdate = batchUpdate; async function batchUpdateChunked(accessToken, appToken, tableId, records, chunkSize = 500) { const allUpdatedRecords = []; for (let i = 0; i < records.length; i += chunkSize) { const chunk = records.slice(i, i + chunkSize); const options = { records: chunk, }; const response = await batchUpdate.call(this, accessToken, appToken, tableId, options); if (response.records && Array.isArray(response.records)) { allUpdatedRecords.push(...response.records); } } return allUpdatedRecords; } exports.batchUpdateChunked = batchUpdateChunked; //# sourceMappingURL=batchUpdate.js.map