Nodul LogoNodul
Инструменты кода

Пользовательские JS-параметры

Пользовательские параметры необходимы для «вынесения» определённых частей из кода и заполнения их в специальных полях без редактирования самого кода.

Например, если в коде используется API-ключ, вы можете сгенерировать отдельное поле в узле JavaScript для ввода этого параметра и обращаться к нему в коде. Таким образом, при изменении API-ключа нужно обновить только значение в отдельном поле, а не код.

Описание параметров

Для отображения полей ввода параметров в интерфейсе узла:

  1. Добавьте описания параметров в код.
  2. Нажмите кнопку Generate Parameters.

Вы можете использовать следующий шаблон для описания параметров:

/** @CustomParams
{
	"parameter1": {
	  "type": "string",                  // Тип параметра, обязательно
	  "title": "Name_parameter1",        // Название параметра, обязательно
	  "required": true,                  // Обязательность параметра, опционально (но рекомендуется заполнять)
	  "description": "Enter parameter1", // Описание параметра, опционально
	  "options": {                       // Опции параметра, опционально
		  "minLength": 10
	  }
	},
	"parameter2": {
	  "type": "int",
	  "title": "Name_parameter2",
	  "required": true,
	  "description": "Enter parameter2",
	  "options": {
		  "minLength": 10
	  }
	}
}
*/

Типы параметров и опции

Подключение (connection)

Параметр типа connection используется для ввода подключения путём выбора его во вспомогательном окне.

Шаблон:

/** @CustomParams
{
	"parameter": {
	  "type": "connection",              
	  "title": "connection_parameter",   
	  "required": false,                 
	  "description": "Enter parameter"   
	}
}
*/

Ниже приведён пример кода, который добавляет строку в Google Таблицу. Данные для строки, включая токен для подключения, вводятся как параметры.

Пример connection

/** @CustomParams
{
    "access_token": {
        "type": "connection",
        "required": true,
        "title": "Google Sheet Connection",
        "description": "Google sheet authorization. Use \"Authorization\" field"
    },
    "spreadsheetId": {
        "type": "string",
        "required": true,
        "title": "Spreadsheet ID"
    },
    "sheetName": {
        "type": "string",
        "required": true,
        "title": "Sheet Name"
    },
    "values": {
        "type": "string_array",
        "title": "Values"
    }
}
*/

import axios from 'axios';

export default async function run({execution_id, input, data, store}) {
    const accessToken = JSON.parse(data.access_token).access_token;
    const spreadsheetId = data.spreadsheetId;
    const sheetName = data.sheetName;
    const values = [data.values];

    const appendOptions = {
        range: sheetName,
        valueInputOption: 'USER_ENTERED',
        insertDataOption: 'INSERT_ROWS',
        includeValuesInResponse: true,
    };

    try {
        const response = await axios({
            method: 'post',
            url: `https://sheets.googleapis.com/v4/spreadsheets/${spreadsheetId}/values/${encodeURIComponent(sheetName)}:append`,
            params: appendOptions,
            headers: {
                'Authorization': `Bearer ${accessToken}`,
                'Content-Type': 'application/json',
            },
            data: {
                values: values,
            },
        });

        return {
            appendedData: response.data,
        };
    } catch (error) {
        console.error('Error appending data to Google Sheet:', error);
        return {
            error: error.response?.data || error.message,
        };
    }
}

Строка (string)

Параметр типа string используется для ввода текста. Вы можете использовать опцию minLength для определения минимального количества требуемых символов.

Шаблон:

/** @CustomParams
{
	"parameter": {
	  "type": "string",                 
	  "title": "string_parameter",
	  "required": false,
	  "description": "Enter parameter",
	  "options": {     
		  "minLength": 10
	  }
	}
}
*/

Ниже приведён пример кода, который подсчитывает количество символов в указанном параметре.

/** @CustomParams
{
	"parameter2": {
	  "type": "string",                 
	  "title": "string_parameter",
	  "required": false,
	  "description": "Enter parameter",
	  "options": {     
		  "minLength": 10
	  }
	}
}
*/

export default async function run({ execution_id, input, data, store }) {
    // Входной строковый параметр получается из объекта data
    const String = data.parameter2;

    // Проверяем, что parameter2 является строкой
    if (typeof String !== 'string') {
        throw new Error('Parameter "String" must be a string.');
    }

    // Подсчитываем количество символов в строке
    const characterCount = String.length;

    // Возвращаем количество символов
    return {
        characterCount
    };
}

Пример string

Целое число (int)

Параметр типа int используется для ввода целых чисел. Вы можете использовать следующие опции для этого параметра:

  • max: максимальное число
  • min: минимальное число

Шаблон:

/** @CustomParams
{
	"parameter": {
	    "type": "int",
	    "title": "int_parameter",
		"required": true,
		"description": "Enter parameter", 
	    "options": {
	        "max": 100,
	        "min": 50
	    }
	}
}
*/

Ниже приведён пример кода, который генерирует случайное число, не превышающее значение, указанное в параметре.

/** @CustomParams
{
	"parameter3": {
	    "type": "int",
	    "title": "int_parameter",
		"required": true,
		"description": "Enter parameter", 
	    "options": {
	        "max": 100,
	        "min": 50
	    }
	}
}
*/

import { randomInt } from 'crypto';

export default async function run({ execution_id, input, data, store }) {
    // Входной параметр MaxN получается из объекта data.
    const MaxN = data.parameter3;

    // Проверяем, что MaxN является числом.
    if (typeof MaxN !== 'number') {
        throw new Error('MaxN should be a number.');
    }

    // Генерируем случайное число от 0 до MaxN (не включая MaxN).
    const randomNumber = randomInt(MaxN);

    // Возвращаем сгенерированное случайное число.
    return {
        randomNumber
    };
}

Пример int

Массив строк (string_array)

Параметр типа string_array используется для ввода списка строк. Вы можете использовать опцию maxCount для определения максимального количества строк.

Шаблон:

/** @CustomParams
{
	"parameter": {
	  "type": "string_array",            
	  "title": "string_array_parameter", 
	  "required": false,                
	  "description": "Enter parameter",
	  "options": {                      
		  "maxCount": 2
	  }
	}
}
*/

Ниже приведён пример, который выводит массив, указанный в параметре, и количество элементов в нём.

/** @CustomParams
{
	"parameter4": {
	  "type": "string_array",            
	  "title": "string_array_parameter", 
	  "required": false,                
	  "description": "Enter parameter",
	  "options": {                      
		  "maxCount": 5
	  }
	}
}
*/

export default async function run({ execution_id, input, data, store }) {
    // Входной параметр-массив получается из объекта data.
    const array = data.parameter4;

	// Проверяем, что parameter4 является массивом.
    if (!Array.isArray(array)) {
        throw new Error('Parameter "parameter4" must be an array.');
    }

    // Подсчитываем количество строк в массиве.
    const stringCount = array.length;

    // Возвращаем результат подсчёта.
    return {
        array,
		stringCount
    };
}

Пример string_array

Ключ-значение (string_to_string)

Параметр типа string_to_string используется для ввода списка строк в формате ключ-значение.

Шаблон:

/** @CustomParams
{
	"parameter": {
	  "type": "string_to_string",             
	  "title": "string_to_string_parameter",  
	  "required": false,                      
	  "description": "Enter parameter",       
	  "options": {                            
		  "maxCount": 2
	  }
	}
}
*/

Ниже приведён пример, который определяет наибольшее значение и его ключ из списка значений в параметре.

/** @CustomParams
{
	"parameter5": {
	  "type": "string_to_string",             
	  "title": "string_to_string_parameter",  
	  "required": false,                      
	  "description": "Enter parameter",       
	  "options": {                            
		  "maxCount": 2
	  }
	}
}
*/

export default async function run({execution_id, input, data}) {
    // Проверяем, что parameter5 существует и является объектом.
    if (typeof data.parameter5 !== 'object' || data.parameter5 === null) {
        throw new Error('parameter5 is missing or not an object');
    }

    // Инициализируем переменные для хранения максимального значения и соответствующего ключа.
    let maxKey = null;
    let maxValue = -Infinity;

    // Перебираем все ключи и значения в объекте parameter5.
    for (const [key, value] of Object.entries(data.parameter5)) {
        // Преобразуем значение в число.
        const numericValue = parseFloat(value);

        // Проверяем, является ли текущее значение наибольшим.
        if (numericValue > maxValue) {
            maxValue = numericValue;
            maxKey = key;
        }
    }

    // Возвращаем максимальное значение и его ключ.
    return {
        maxKey,
        maxValue
    };
}

Пример string_to_string

Выпадающий список (select)

Параметр типа select используется для выбора значения из предопределённого списка возможных значений. Вы можете использовать следующие опции для этого параметра:

  • options: массив вида [{ "key": "SelectOptionKey1", "value": "SelectOptionValue1" }]. (value — значение, которое будет отображаться в выпадающем списке, key — ключ, который будет использоваться в коде).
  • multiple: позволяет выбрать несколько значений.

Шаблон:

/** @CustomParams
{
	"parameter": {
	  "type": "select",             
	  "title": "select_parameter",  
	  "required": false, 
	  "description": "Enter parameter", 
	  "options": {                     
		  "options": [{ "key": "SelectOptionKey1", "value": "SelectOptionValue1" }, { "key": "SelectOptionKey2", "value": "SelectOptionValue2" }],
      "multiple": false
	  }
	}
}
*/

Ниже приведён пример, который выводит выбранное значение параметра.

/** @CustomParams
{
	"parameter6": {
	  "type": "select",             
	  "title": "select_parameter",  
	  "required": false, 
	  "description": "Enter parameter", 
	  "options": {                     
		  "options": [{ "key": "1", "value": "100" }, { "key": "2", "value": "200" }],
      "multiple": false
	  }
	}
}
*/

export default async function run({ execution_id, input, data, store }) {
    // Создаём соответствие ключей и значений для удобного поиска.
    const optionsMapping = {
        "1": "100",
        "2": "200"
    };

    // Получаем ключ, выбранный пользователем.
	const selectedKey = data.parameter6;

    // Находим соответствующее значение.
    const selectedValue = selectedKey ? optionsMapping[selectedKey] : undefined;

    if (selectedValue) {
        console.log('Selected value:', selectedValue);
        return { selectedValue };
    } else {
        console.log('Selected value not found.');
        return {};
    }
}

Пример select

Булево значение (bool)

Параметр типа bool используется для ввода значения true/false.

Шаблон:

/** @CustomParams
{
	"parameter": {
	  "type": "bool",                   
	  "title": "bool_parameter",        
	  "required": false,                
	  "description": "Enter parameter" 
	}
}
*/

Ниже приведён пример кода, который выводит одно значение или другое в зависимости от того, установлен ли параметр в true или false.

/** @CustomParams
{
	"parameter7": {
	  "type": "bool",                   
	  "title": "bool_parameter",        
	  "required": false,                
	  "description": "Enter parameter" 
	}
}
*/

export default async function run({execution_id, input, data, store}) {
	
	const TrueFalse = data.parameter7

	 // Проверяем значение и возвращаем "Yes" или "No" в зависимости от условия.
    const result = TrueFalse === true ? "Yes" : "No";

    return {
        result 
    };
}

Пример bool