Почему JavaScript — ваш главный помощник в автоматизации
Вы когда-нибудь ловили себя на мысли, что тратите часы на однотипные действия: переименовываете сотни файлов, копируете данные из таблиц, отправляете десятки писем или проверяете, не упал ли сайт? Если да — эта статья для вас.
JavaScript давно перестал быть просто «языком для анимации кнопок». С появлением Node.js и мощных библиотек, он превратился в универсальный инструмент для автоматизации задач. И да, даже если вы Python-разработчик, JS может стать вашим секретным оружием: он работает везде — в браузере, на сервере, в облаках и даже на Raspberry Pi.
В этой статье мы разберем реальные сценарии автоматизации на JavaScript, которые сэкономят вам десятки часов. Никакой воды — только код и практика.
1. Автоматизация браузера: Puppeteer и Playwright
Представьте: нужно собрать цены с 500 страниц интернет-магазина, но API нет. Ручной копипаст? Нет, спасибо. На помощь приходит Puppeteer — библиотека для управления Chromium.
Пример: Парсинг заголовков новостей
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
await page.goto('https://news.ycombinator.com', { waitUntil: 'networkidle2' });
const titles = await page.evaluate(() => {
const items = document.querySelectorAll('.titleline > a');
return Array.from(items).map(item => item.innerText);
});
console.log('Последние новости:', titles.slice(0, 10));
await browser.close();
})();
Этот скрипт открывает Hacker News, собирает заголовки первых 10 новостей и выводит их в консоль. В реальной жизни вы можете добавить сохранение в CSV, отправку в Telegram или запись в базу данных.
Playwright — альтернатива с суперсилами
Если вам нужно работать с несколькими браузерами (Chrome, Firefox, Safari) или эмулировать мобильные устройства, используйте Playwright. Он быстрее, стабильнее и умеет перехватывать запросы.
2. Работа с файлами: переименование, сортировка, очистка
У вас есть папка с 1000 фотографий с именами вроде "IMG_20250101_123456.jpg"? Хотите привести их к порядку? Встроенный модуль fs (File System) в Node.js справится с этим за секунды.
Пример: Массовое переименование файлов
const fs = require('fs');
const path = require('path');
const directory = './photos';
fs.readdir(directory, (err, files) => {
if (err) throw err;
files.forEach((file, index) => {
const ext = path.extname(file);
const newName = `photo_${String(index + 1).padStart(4, '0')}${ext}`;
fs.rename(
path.join(directory, file),
path.join(directory, newName),
(err) => {
if (err) console.error(`Ошибка с файлом ${file}:`, err);
else console.log(`${file} → ${newName}`);
}
);
});
});
Вы можете легко модифицировать скрипт: добавить фильтр по расширению, извлечь дату из EXIF, переименовать по шаблону. Это база, на которой строятся десятки утилит.
3. Автоматизация работы с CSV и Excel (без офисного пакета)
Бизнес-задачи часто требуют обработки таблиц. Для CSV используйте встроенный модуль или библиотеку csv-parser. Для Excel — xlsx (SheetJS).
Пример: Чтение CSV и создание отчета
const fs = require('fs');
const csv = require('csv-parser');
const createCsvWriter = require('csv-writer').createObjectCsvWriter;
const results = [];
fs.createReadStream('orders.csv')
.pipe(csv())
.on('data', (row) => {
if (parseFloat(row.total) > 100) {
results.push({
orderId: row.id,
client: row.name,
sum: row.total
});
}
})
.on('end', () => {
const csvWriter = createCsvWriter({
path: 'big_orders.csv',
header: [
{ id: 'orderId', title: 'ID заказа' },
{ id: 'client', title: 'Клиент' },
{ id: 'sum', title: 'Сумма' }
]
});
csvWriter.writeRecords(results)
.then(() => console.log('Готово! Отфильтровано заказов:', results.length));
});
Запустили — и готов фильтр заказов на сумму более 100 единиц. Без Excel, макросов и ручного труда.
4. Автоматизация отправки email (Nodemailer)
Нужно разослать персонализированные письма клиентам? Или настроить уведомления о падении сервера? Nodemailer — стандарт де-факто для отправки email в Node.js.
Пример: Отправка письма с HTML-шаблоном
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'your@gmail.com',
pass: 'your-app-password' // используйте пароль приложения!
}
});
const mailOptions = {
from: '"Автоматизатор" <your@gmail.com>',
to: 'client@example.com, manager@example.com',
subject: 'Еженедельный отчет готов',
html: `<h2>Отчет за неделю</h2>
<p>Всего заказов: <strong>42</strong></p>
<p>Выручка: <strong>125 000 руб.</strong></p>`
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) return console.error(error);
console.log('Письмо отправлено:', info.response);
});
Совет: никогда не храните пароли в коде. Используйте переменные окружения (process.env) или менеджер секретов.
5. Веб-хуки и интеграции: превращаем события в действия
Автоматизация на JavaScript — это не только про скрипты, но и про реакцию на события. Вы можете создать сервер на Express, который слушает веб-хуки от GitHub, Stripe, Telegram и запускает нужные действия.
Пример: Автоматический бэкап базы данных при пуше в Git
const express = require('express');
const { exec } = require('child_process');
const app = express();
app.use(express.json());
app.post('/github-webhook', (req, res) => {
const event = req.headers['x-github-event'];
if (event === 'push' && req.body.ref === 'refs/heads/main') {
console.log('Новый коммит в main! Запускаем бэкап...');
exec('pg_dump mydb > backup.sql', (err, stdout, stderr) => {
if (err) return res.status(500).send('Backup failed');
console.log('Бэкап создан:', stdout);
res