dtamind-components
Version:
DTAmindai Components
357 lines • 13.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("../../../src/utils");
const core_1 = require("./core");
class GoogleSheets_Tools {
constructor() {
this.label = 'Google Sheets';
this.name = 'googleSheetsTool';
this.version = 1.0;
this.type = 'GoogleSheets';
this.icon = 'google-sheets.svg';
this.category = 'Tools';
this.description = 'Perform Google Sheets operations such as managing spreadsheets, reading and writing values';
this.baseClasses = ['Tool'];
this.credential = {
label: 'Connect Credential',
name: 'credential',
type: 'credential',
credentialNames: ['googleSheetsOAuth2']
};
this.inputs = [
{
label: 'Type',
name: 'sheetsType',
type: 'options',
description: 'Type of Google Sheets operation',
options: [
{
label: 'Spreadsheet',
name: 'spreadsheet'
},
{
label: 'Values',
name: 'values'
}
]
},
// Spreadsheet Actions
{
label: 'Spreadsheet Actions',
name: 'spreadsheetActions',
type: 'multiOptions',
description: 'Actions to perform on spreadsheets',
options: [
{
label: 'Create Spreadsheet',
name: 'createSpreadsheet'
},
{
label: 'Get Spreadsheet',
name: 'getSpreadsheet'
},
{
label: 'Update Spreadsheet',
name: 'updateSpreadsheet'
}
],
show: {
sheetsType: ['spreadsheet']
}
},
// Values Actions
{
label: 'Values Actions',
name: 'valuesActions',
type: 'multiOptions',
description: 'Actions to perform on sheet values',
options: [
{
label: 'Get Values',
name: 'getValues'
},
{
label: 'Update Values',
name: 'updateValues'
},
{
label: 'Append Values',
name: 'appendValues'
},
{
label: 'Clear Values',
name: 'clearValues'
},
{
label: 'Batch Get Values',
name: 'batchGetValues'
},
{
label: 'Batch Update Values',
name: 'batchUpdateValues'
},
{
label: 'Batch Clear Values',
name: 'batchClearValues'
}
],
show: {
sheetsType: ['values']
}
},
// Spreadsheet Parameters
{
label: 'Spreadsheet ID',
name: 'spreadsheetId',
type: 'string',
description: 'The ID of the spreadsheet',
show: {
sheetsType: ['spreadsheet', 'values']
},
additionalParams: true,
optional: true
},
{
label: 'Title',
name: 'title',
type: 'string',
description: 'The title of the spreadsheet',
show: {
spreadsheetActions: ['createSpreadsheet', 'updateSpreadsheet']
},
additionalParams: true,
optional: true
},
{
label: 'Sheet Count',
name: 'sheetCount',
type: 'number',
description: 'Number of sheets to create',
default: 1,
show: {
spreadsheetActions: ['createSpreadsheet']
},
additionalParams: true,
optional: true
},
// Values Parameters
{
label: 'Range',
name: 'range',
type: 'string',
description: 'The range to read/write (e.g., A1:B2, Sheet1!A1:C10)',
show: {
valuesActions: ['getValues', 'updateValues', 'clearValues']
},
additionalParams: true,
optional: true
},
{
label: 'Ranges',
name: 'ranges',
type: 'string',
description: 'Comma-separated list of ranges for batch operations',
show: {
valuesActions: ['batchGetValues', 'batchClearValues']
},
additionalParams: true,
optional: true
},
{
label: 'Values',
name: 'values',
type: 'string',
description: 'JSON array of values to write (e.g., [["A1", "B1"], ["A2", "B2"]])',
show: {
valuesActions: ['updateValues', 'appendValues', 'batchUpdateValues']
},
additionalParams: true,
optional: true
},
{
label: 'Value Input Option',
name: 'valueInputOption',
type: 'options',
description: 'How input data should be interpreted',
options: [
{
label: 'Raw',
name: 'RAW'
},
{
label: 'User Entered',
name: 'USER_ENTERED'
}
],
default: 'USER_ENTERED',
show: {
valuesActions: ['updateValues', 'appendValues', 'batchUpdateValues']
},
additionalParams: true,
optional: true
},
{
label: 'Value Render Option',
name: 'valueRenderOption',
type: 'options',
description: 'How values should be represented in the output',
options: [
{
label: 'Formatted Value',
name: 'FORMATTED_VALUE'
},
{
label: 'Unformatted Value',
name: 'UNFORMATTED_VALUE'
},
{
label: 'Formula',
name: 'FORMULA'
}
],
default: 'FORMATTED_VALUE',
show: {
valuesActions: ['getValues', 'batchGetValues']
},
additionalParams: true,
optional: true
},
{
label: 'Date Time Render Option',
name: 'dateTimeRenderOption',
type: 'options',
description: 'How dates, times, and durations should be represented',
options: [
{
label: 'Serial Number',
name: 'SERIAL_NUMBER'
},
{
label: 'Formatted String',
name: 'FORMATTED_STRING'
}
],
default: 'FORMATTED_STRING',
show: {
valuesActions: ['getValues', 'batchGetValues']
},
additionalParams: true,
optional: true
},
{
label: 'Insert Data Option',
name: 'insertDataOption',
type: 'options',
description: 'How data should be inserted',
options: [
{
label: 'Overwrite',
name: 'OVERWRITE'
},
{
label: 'Insert Rows',
name: 'INSERT_ROWS'
}
],
default: 'OVERWRITE',
show: {
valuesActions: ['appendValues']
},
additionalParams: true,
optional: true
},
{
label: 'Include Grid Data',
name: 'includeGridData',
type: 'boolean',
description: 'True if grid data should be returned',
default: false,
show: {
spreadsheetActions: ['getSpreadsheet']
},
additionalParams: true,
optional: true
},
{
label: 'Major Dimension',
name: 'majorDimension',
type: 'options',
description: 'The major dimension that results should use',
options: [
{
label: 'Rows',
name: 'ROWS'
},
{
label: 'Columns',
name: 'COLUMNS'
}
],
default: 'ROWS',
show: {
valuesActions: ['getValues', 'updateValues', 'appendValues', 'batchGetValues', 'batchUpdateValues']
},
additionalParams: true,
optional: true
}
];
}
async init(nodeData, _, options) {
const sheetsType = nodeData.inputs?.sheetsType;
let credentialData = await (0, utils_1.getCredentialData)(nodeData.credential ?? '', options);
credentialData = await (0, utils_1.refreshOAuth2Token)(nodeData.credential ?? '', credentialData, options);
const accessToken = (0, utils_1.getCredentialParam)('access_token', credentialData, nodeData);
if (!accessToken) {
throw new Error('No access token found in credential');
}
// Get all actions based on type
let actions = [];
if (sheetsType === 'spreadsheet') {
actions = (0, utils_1.convertMultiOptionsToStringArray)(nodeData.inputs?.spreadsheetActions);
}
else if (sheetsType === 'values') {
actions = (0, utils_1.convertMultiOptionsToStringArray)(nodeData.inputs?.valuesActions);
}
const defaultParams = this.transformNodeInputsToToolArgs(nodeData);
const tools = (0, core_1.createGoogleSheetsTools)({
accessToken,
actions,
defaultParams
});
return tools;
}
transformNodeInputsToToolArgs(nodeData) {
// Collect default parameters from inputs
const defaultParams = {};
// Common parameters
if (nodeData.inputs?.spreadsheetId)
defaultParams.spreadsheetId = nodeData.inputs.spreadsheetId;
// Spreadsheet parameters
if (nodeData.inputs?.title)
defaultParams.title = nodeData.inputs.title;
if (nodeData.inputs?.sheetCount)
defaultParams.sheetCount = nodeData.inputs.sheetCount;
if (nodeData.inputs?.includeGridData !== undefined)
defaultParams.includeGridData = nodeData.inputs.includeGridData;
// Values parameters
if (nodeData.inputs?.range)
defaultParams.range = nodeData.inputs.range;
if (nodeData.inputs?.ranges)
defaultParams.ranges = nodeData.inputs.ranges;
if (nodeData.inputs?.values)
defaultParams.values = nodeData.inputs.values;
if (nodeData.inputs?.valueInputOption)
defaultParams.valueInputOption = nodeData.inputs.valueInputOption;
if (nodeData.inputs?.valueRenderOption)
defaultParams.valueRenderOption = nodeData.inputs.valueRenderOption;
if (nodeData.inputs?.dateTimeRenderOption)
defaultParams.dateTimeRenderOption = nodeData.inputs.dateTimeRenderOption;
if (nodeData.inputs?.insertDataOption)
defaultParams.insertDataOption = nodeData.inputs.insertDataOption;
if (nodeData.inputs?.majorDimension)
defaultParams.majorDimension = nodeData.inputs.majorDimension;
return defaultParams;
}
}
module.exports = { nodeClass: GoogleSheets_Tools };
//# sourceMappingURL=GoogleSheets.js.map