Свой код
Модуль «Выполнение кода» в Конструкторе модулей Multogram: встроенный JavaScript, Python, Node.js, CMD, Bash и PowerShell. Как подставляются переменные и ресурсы, как вернуть результат, пакеты.
Если готового действия не хватает, напишите фрагмент кода — модуль Выполнение кода выполнит его прямо в сценарии.
Языки
| Действие | Язык | Когда выбирать |
|---|---|---|
| Выполнить JavaScript (ECMA) | Встроенный JavaScript | Вычисления и обработка данных. Ничего ставить не нужно; нет require, модулей Node.js и асинхронности |
| Выполнить Python | Python | Библиотеки Python, сложная обработка |
| Выполнить Node.js | Node.js | Пакеты npm, привычный JavaScript |
| Выполнить CMD, Выполнить PowerShell, Выполнить Bash | Командные оболочки | Системные команды и скрипты |
Пакеты ставятся действиями Установить пакет Python и Установить пакет Node.js и удаляются парными действиями. Python и Node.js должны быть установлены на компьютере пользователя модуля; встроенному JavaScript ничего не нужно — для модулей, которые вы раздаёте, выбирайте его.
Переменные и ресурсы в коде
Перед запуском [[переменные]] и {{ресурсы}} подставляются в код с учётом места:
| Где стоит ссылка | Что подставится | Пример |
|---|---|---|
| В коде | Значение своего типа: текст в кавычках, число, объект | var n = [[count]]; → var n = 5; |
| Внутри строки в кавычках | Просто текст, без лишних кавычек | print("phone=[[phone]]") → print("phone=79000000000") |
Пишите [[x]] прямо в коде, чтобы получить значение; берите в кавычки, только если нужен именно
текст. В комментариях ссылки не подставляются.
Опечатка в имени не вызовет ошибку
Несуществующая переменная превращается в null (в Python — None), а выполнение продолжается. Если
результат странный, сначала проверьте имена.
Как вернуть результат
- Вывод программы (
print(...),console.log(...)) попадает в переменную результата действия. - Присваивание
[[имя]] = значениепрямо в коде создаёт или меняет переменную сценария — объекты и массивы сохраняются как есть. Работает в Python, Node.js и встроенном JavaScript.
var digits = ('' + [[phoneInput]]).replace(/[^0-9]/g, '');
[[phone]] = { ok: digits !== '', value: digits };
print(digits ? '+' + digits : 'EMPTY');После этого действия в сценарии есть объект [[phone]] с полями ok и value, а в переменной
результата — напечатанная строка.
Когда код не нужен
Многое уже есть готовыми действиями: строки, JSON, регулярные выражения, математика, дата и время — см. Модули и действия. Готовые действия проще читать и проверять, код оставьте для того, что ими не выразить.
Обновлено
Потоки и аккаунты
Как модуль Multogram работает в несколько потоков: что такое поток, как раздать аккаунты потокам без повторов, когда задача модуля заканчивается, общие и локальные данные, журнал и статистика задачи, параллельный запуск функций.
Тестирование и отладка
Как проверить модуль в Конструкторе модулей Multogram: точка теста, одиночный и полный тест, тест одного действия, тестовые значения ресурсов, инспектор переменных и логов, поиск причин ошибок.