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

12.06 Использование глобальных переменных в разных сценариях

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

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

Получение и запись трех глобальных переменных

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

  • (1) Узел Trigger on Run once для запуска сценария по нажатию на кнопку Запустить один раз;
  • (2) Узел HTTP request с запросом GET, для отправки запроса к сервису OpenWeather для получения параметра температуры в Лондоне;
  • (3) Узел JavaScript, для расчета времени суток (утра, дня, ночи) с кодом:
export default async function run({execution_id, input, data, store}) {
// Создаем объект Date для UTC
const now = new Date();

// Определяем смещение для таймзоны Москвы (UTC+3)
const timezoneOffset = 3 * 60;

// Корректируем текущее время с учетом таймзоны Москвы
now.setMinutes(now.getMinutes() + now.getTimezoneOffset() + timezoneOffset);

// Получаем часы, скорректированные для таймзоны Москвы
const hours = now.getHours();

let timeOfDay; // Переменная для времени суток

// Определяем время суток
if (hours >= 4 && hours < 12) {
timeOfDay = "morning";
} else if (hours >= 12 && hours < 20) {
timeOfDay = "day";
} else {
timeOfDay = "night";
}

// Возвращаем объект с временем суток
return {
timeOfDay: timeOfDay
};
}
  • (3.1) Настроить связь morning от узла JavaScript, по которой пойдет выполнение сценария, если рассчитанное в узле JavaScript время суток утро. Для этого в связь необходимо добавить условие:
  • (3.2) Настроить связь day от узла JavaScript, по которой пойдет выполнение сценария, если рассчитанное в узле JavaScript время суток день. Для этого в связь необходимо добавить условие:
  • (3.3) Настроить связь night от узла JavaScript, по которой пойдет выполнение сценария, если рассчитанное в узле JavaScript время суток ночь. Для этого в связь необходимо добавить условие:
  • (4) Узел SetGlobalVariables для создания глобальной переменной morningTemp, содержащей параметр утренней температуры, полученной во время суток утро из узла HTTP request;
  • (5) Узел SetGlobalVariables для создания глобальной переменной dayTemp, содержащей параметр дневной температуры, полученной во время суток день из узла HTTP request;
  • (6) Узел SetGlobalVariables для создания глобальной переменной nightTemp, содержащей параметр ночной температуры, полученной во время суток ночь из узла HTTP request;

Итогом выполнения сценария является запись значений трех глобальных переменных. Значения можно просмотреть в таблице переменных:

Обработка глобальных переменных

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

  • (1) Узел Trigger on Run once для запуска сценария по нажатию на кнопку Запустить один раз;
  • (2) Узел JavaScript, для расчета среднесуточной температуры с кодом ниже. Для расчета среднесуточного значения используются переменные morningTemp, dayTemp, nightTemp полученные и записанные в сценарии Получение и запись трех глобальных переменных:
import axios from 'axios';

export default async function run({execution_id, input, data}) {
// Получение значений температур в градусах Кельвина и преобразование в Цельсий
const dayTempCelsius = parseFloat(data["{{%.dayTemp}}"]) - 273.15;
const morningTempCelsius = parseFloat(data["{{%.morningTemp}}"]) - 273.15;
const nightTempCelsius = parseFloat(data["{{%.nightTemp}}"]) - 273.15;

// Расчёт среднего арифметического в Цельсиях
let averageTempCelsius = (dayTempCelsius + morningTempCelsius + nightTempCelsius) / 3;

// Округление до двух знаков после запятой
averageTempCelsius = parseFloat(averageTempCelsius.toFixed(2));

// Возврат результата
return {
averageTempCelsius: averageTempCelsius
};
}
  • (3) Узел Webhook response, для получения результата при успешном выполнении сценария:

Итогом выполнения сценария является ответ с результатами обработки трех глобальных переменных, например: Средняя температура равна 17.890000 градусам.