Перейти к основному содержимому

12.07 Использование JS для управления глобальными переменными

В качестве примера использования узла JavaScript для управления глобальными переменными создадим сценарий, в процессе выполнения которого последовательно:

  • создаются несколько глобальных переменных разного типа;
  • удаляются глобальные переменные, созданные не сегодня;
  • возвращается перечень созданных сегодня глобальных переменных и числовых переменных, значение которых больше 100;
  • возвращается значение текстовой переменной.

Для успешной работы сценария необходимо добавить 6 узлов:

  • (1) Узел Trigger on Run once для инициации однократного запуска сценария сразу после нажатия на кнопку Запустить один раз;
  • (2) Узел JavaScript с названием Create a GV для создания глобальных переменных разного типа с кодом:
export default async function run({ execution_id, input, data, store }) {
// Создаем три числовые глобальные переменные
await store.setGlobalVariable("GlobalVar_number1", 100);
await store.setGlobalVariable("GlobalVar_number2", 200);
await store.setGlobalVariable("GlobalVar_number3", 300);

// Создаем глобальные переменные с типами строка и JSON
await store.setGlobalVariable("GlobalVarFromJs_string", "global var string value");
await store.setGlobalVariable("GlobalVarFromJs_obj", {"key":"global var object value"});

return {
}
}
  • (3) Узел JavaScript с названием Delete a GV для удаления глобальных переменных, созданных не сегодня, с кодом:
export default async function run({ execution_id, input, data, store }) {
// Получаем список глобальных переменных
const list = await store.listGlobalVariables();

// Получаем текущую дату в формате ISO (без времени)
const today = new Date().toISOString().slice(0, 10);

// Создаем массив промисов для удаления переменных, созданных не сегодня
const deletePromises = list
.filter(variable => {
// Преобразуем дату создания переменной в формат ISO (без времени)
const creationDate = new Date(variable.created_at).toISOString().slice(0, 10);
// Возвращаем true, если переменная была создана не сегодня
return creationDate !== today;
})
.map(variable => {
return store.deleteGlobalVariable(variable.key);
});

// Выполняем все операции удаления
await Promise.all(deletePromises);

return {
}
}
  • (4) Узел JavaScript с названием List of GV для получения перечня оставшихся глобальных, в том числе числовых переменных, значение которых больше 100, с кодом:
export default async function run({ execution_id, input, data, store }) {
// Получаем список глобальных переменных
const list = await store.listGlobalVariables();

// Получаем текущую дату в формате ISO (без времени)
const today = new Date().toISOString().slice(0, 10);

// Создаем массив для числовых переменных с значением больше 100
const numericVariablesOver100 = list.filter(variable => {
return typeof variable.value === 'number' && variable.value > 100;
});

// Создаем массив для переменных другого типа, созданных сегодня
const nonNumericVariablesCreatedToday = list.filter(variable => {
const creationDate = new Date(variable.created_at).toISOString().slice(0, 10);
return typeof variable.value !== 'number' && creationDate === today;
});

// Объединяем два массива
const variablesToReturn = [...numericVariablesOver100, ...nonNumericVariablesCreatedToday];

// Возвращаем результат
return {
variables: variablesToReturn
};
}
  • (5) Узел JavaScript с названием Get a GV для получения значения строковой глобальной переменной с кодом:
export default async function run({ execution_id, input, data, store }) {

// Получение значения глобальной переменной
const res_gv_str = await store.getGlobalVariable("GlobalVarFromJs_string")

return {
res_gv_str
}
}
  • (6) Узел Webhook response для возврата сообщения “Ok” об успешном выполнении сценария.

Итогом работы сценария являются выходные параметры любого из узлов JavaScript и выполнение заданных действий с глобальными переменными. Эти параметры могут быть использованы при необходимости в других сценариях или узлах.