لماذا 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 (نظام الملفات) في 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 (بدون حزمة Office)
غالباً ما تتطلب مهام الأعمال معالجة الجداول. لـ 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 csvW