تُعد برمجة الإسكربتات (Scripts) لبرامج أدوبي وسيلة فعّالة لتحسين إنتاجيتك وأتمتة المهام الروتينية بسرعة وكفاءة.
ولكن السؤال الأهم الآن: كيف تبدأ في برمجة الإسكربتات؟ 🤔
بإذن الله، في هذه المقالة، ستجد دليلًا شاملًا يُرشدك خطوة بخطوة للبدء في هذا المجال.
يبدو أنك تشعر بالتردد في تعلم برمجة الإسكربتات، وهذا أمر طبيعي! البرمجة ليست مخيفة كما تبدو، فهي كتابة أوامر تسهل العمل وتنجز المهام بطريقة سريعة لا يمكن تحقيقها بنفس تلك السرعة بالطرق التقليدية.
قم بتثبيت ExtendScript Toolkit كما هو موضح بالصورة.
افتح برنامج ExtendScript Toolkit وقم بنسخ الكود التالي بالضغط على “Copy” ثم ضع الكود في البرنامج:
// انشاء نافذة الاسكربت // var win = new Window("window"); win.text = "Start"; win.orientation = "column"; win.alignChildren = ["center","top"]; win.spacing = 10; win.margins = 16; // اضافة زر الي النافذة // var button1 = win.add("button", undefined, undefined, {name: "button1"}); button1.text = "Start"; //وظيفة الزر // button1.onClick = function() { alert("✨لقد نجحت في خطوتك الأولى في برمجة الاسكربتات✨"); } win.show();
عند الضغط على الزر الأخضر في البرنامج، ستظهر نافذة الإسكربت في برنامج After Effects، تحتوي على زر باسم “Start”. وعند الضغط عليه، سيظهر إشعار يحمل الرسالة:
✨لقد نجحت في خطوتك الأولى في برمجة الإسكربتات✨
⚠️ ملحوظة: يمكن تشغيل الكود السابق في برنامجي After Effects وIllustrator فقط، لذا يُرجى اختيار أحدهما فقط عند تشغيل الكود.
قم بالتعلم من قناة NT Productions وشاهد التوتوريال الموجود بها وقم بالتطبيق عليه، وستزداد معرفتك مع كل فيديو جديد تتعلمه.
إذا واجهتك أي مشكلة أو احتجت إلى مساعدة، قم بطرح الأسئلة على ChatGPT 🤖.
المشكلة هذه قد تواجهك في رحلة تعلم برمجة الإسكربتات، وهي ظهور هذا المربع البرتقالي الذي يعني أن هذا السطر من الكود يحتوي على خطأ.
هنا، مثلاً، تعمدت مسح رقم “1” من اسم الزر الذي كان “button 1“، وهذا سبب المشكلة، لأنني قمت بتعريف الزر في السطر الذي قبله باستخدام “var button1” باسم “button1“. وعندما حذفت رقم “1” من اسم الزر في السطر الذي يحتوي على المربع البرتقالي، لم يتعرف البرنامج عليه وأعطاني رسالة تفيد بأن هذا السطر يحتوي على خطأ.
⚠️ملحوظة: إذا أردت التعديل في الكود وقد قمت بتشغيله على أي برنامج من برامج أدوبي، قم أولاً بإيقاف تشغيل الكود من الزر الأزرق المشار إليه في الصورة، ثم قم بتعديل الكود وتصحيحه.
إذا واجهتك هذه المشكلة في بداية تعلمك ولاتعرف ما سبب هذا الخطأ الذي يحدث، يمكنك رفع الكود كامل الذي به خطأ إلى ChatGPT 🤖 أن هذا السطر من الكود به خطأ وسوف يقترح عليك الكود الصحيح ومع التعلم والتجربة والخطأ ستدرك بعد ذلك ما سبب الخطأ وتصلحه بنفسك.
الآن، وبعد أن كسرت حاجز خوفك من البرمجة، تهانينا! 🎉
أنت على الطريق الصحيح.
ولذلك، دعنا نتعمق أكثر في برمجة الإسكربتات:
باختصار:
كل أداة من هذه الأدوات (الإسكربتات، الإضافات، والبلجنز) لها استخداماتها الخاصة بناءً على متطلبات المشروع:
الإسكربتات: تُستخدم لإنجاز بعض المهام المتكررة وتوفير الوقت، لكنها محدودة من حيث الوظائف وقدرة التحكم في واجهة المستخدم. وهي أقل هذه الأدوات من حيث الوقت المطلوب في البرمجة.
الإضافات: توفر واجهات مستخدم متقدمة وأدوات تفاعلية، ويمكنها الوصول إلى وظائف أكثر من الإسكربتات والتعامل مع مكتبات خارجية.
البلجنز: هي الأكثر تعقيدًا من حيث البرمجة وتُستخدم لإنشاء تعديلات متقدمة على البكسلات وتوفير وظائف قوية للغاية.
وبما أنك تعرّفت الآن على نظرة مفصّلة عن الأدوات، لذلك أنت تقوم بتفعيل خيار “Allow Scripts to Write Files and Access Network” حتى تتمكّن تلك الإسكربتات والأدوات التي قمت بتثبيتها من العمل بشكل صحيح، وتنفيذ الوظائف المدمجة بها، والوصول إلى المكتبات المدمجة بها عبر الإنترنت.
هناك فرق جوهري بين الإكسبريشن والأدوات الأخرى ( الإسكربتات والإكستينشن والبلجنز )، لذلك لم أضع الإكسبريشن معهم في المقارنة.
💡من هنا تبدأ الفكرة وهي كتابة كود يساعدك على إنجاز المهام الطويلة التي تستغرق منك الكثير من الوقت وانجازها بشكل أسرع وأكثر كفاءة، ولكنك لاتعرف كيف تنفذ هذه الفكرة كأداة تساعدك في عملك ولذلك تأتي هنا المرحلة الثانية:
// Get the currently active comp var comp = app.project.activeItem; // Ensure the active item is a comp if (comp && comp instanceof CompItem) { // Define the desired color for the layer (modify as needed) var solidColor = [0, 1, 0]; // Green color // Create the layer app.beginUndoGroup("Create Solid"); var solidLayer = comp.layers.addSolid(solidColor, "Solid Layer", comp.width, comp.height, comp.pixelAspect, comp.duration); app.endUndoGroup(); } else { alert("Please select an active comp."); }
إذا قمت بنسخ الكود أعلاه ووضعه في ExtendScript Toolkit، ثم قمت باختيار After Effects وتشغيل الكود:
سيتم إنشاء طبقة سوليد بلون أخضر بنفس مقاسات الكومب النشطة حاليًا دون الحاجة إلى نافذة مستخدم أو أزرار.
هو إطار عمل من أدوبي يُستخدم لإنشاء واجهات مستخدم بسيطة داخل برامج أدوبي. يُمكنك من خلاله إضافة:
وهذا النوع من الإسكربتات يتم برمجته على جزئين:
في هذه المرحلة، يتم إنشاء نافذة المستخدم وإضافة العناصر اللازمة مثل الأزرار،مربعات النصوص،وقوائم الاختيار، وأي عناصر أخرى لتنفيذ المهام المطلوبة.
طرق تصميم نافذة المستخدم:
1. التصميم اليدوي:
مثال على إنشاء نافذة المستخدم:
var win = new Window("dialog", "My Script"); win.show();
إذا قمت بنسخ هذا الكود ووضعه في ExtendScript Toolkit، ثم اخترت After Effects وقمت بتشغيل الكود:
ستظهر نافذة باسم My Script.
هناك ثلاثة أنواع من نوافذ واجهة المستخدم، تعرف عليها سريعًا:
إن شاء الله أذكر لك في مقالة أخرى الفرق بينها واستخدامات كل واحدة من هذه النوافذ.
2. باستخدام مواقع مساعدة :
حيث يمكنك استخدام مواقع تسهل عليك تصميم واجهة المستخدم، مثل موقع:
الموقع بسيط جدًا، كل ما عليك هو سحب العناصر من النافذة على اليسار، مثل الأزرار والنصوص ومربعات الاختيار وغيرها، وإضافتها إمّا إلى الـ Structure الذي على اليسار أو إلى نافذة المستخدم التي على اليمين مباشرةً. بمجرد إضافة العناصر، يمكنك تعديل خصائصها بسهولة لتتناسب مع احتياجاتك. بعد الانتهاء، يمكنك نسخ الكود مباشرةً أو حفظه لاستخدامه في الإسكربت الذي تعمل عليه.
ScriptUI 2.8 Documentation
دليل شامل يساعدك على تصميم واجهات المستخدم وإضافة عناصر، مثل الأزرار ومربعات الاختيار، إلى تلك النافذة وكيفية تخصيصها.
بعد الانتهاء من تصميم نافذة المستخدم، تأتي الخطوة الأهم، وهي إضافة الوظائف البرمجية التي تجعل العناصر (الأزرار، القوائم، مربعات النصوص وغيرها) تقوم بالمهام المطلوبة.
var win = new Window("dialog", "My Script"); var button = win.add("button", undefined, "Click"); button.onClick = function() { alert("صلِّ على النبي ﷺ"); }; win.show();
1. win.add(“button”, undefined, “Click”):
يُضيف زرًا باسم “Click” إلى نافذة المستخدم.
undefined يُشير إلى أن الزر لا يحتوي على موقع محدد مسبقًا، ويُعتمد موقعه على ترتيب العناصر.
2. button.onClick:
تُحدد الوظيفة التي يتم تنفيذها عند الضغط على الزر.
3. alert(“صلِّ على النبي ﷺ”):
عند الضغط على الزر، تظهر نافذة تنبيه تحتوي على نص “صلِّ على النبي ﷺ“.
فلا تنسوا الإكثار من الصلاة على النبي، حيث قال تعالى:
إِنَّ اللَّهَ وَمَلَائِكَتَهُ يُصَلُّونَ عَلَى النَّبِيِّ ۚ يَا أَيُّهَا الَّذِينَ آمَنُوا صَلُّوا عَلَيْهِ وَسَلِّمُوا تَسْلِيمًا (56) سورة الأحزاب
للتوضيح أكثر:
1. إذا كنت ترغب في تجربة وتشغيل الإسكربتات التي تحتوي فقط على وظائف دون واجهة مستخدم، قم بالآتي:
عند تثبيت الإسكربتات باستخدام هذين الخيارين، ستحتاج إلى إعادة تشغيل الإفترافكتس لكي تظهر الإسكربتات داخل البرنامج.
2. إذا كنت بحاجة إلى إسكربت يحتوي على واجهة مستخدم يتم تثبيتها داخل مساحة عمل After Effects، فقم بوضع الإسكربتات داخل ملف ScriptUI Panels وتشغيلها من قائمة Window.
ملاحظة: ليست كل برامج أدوبي تسمح بتثبيت نافذة المستخدم للإسكربت داخل مساحة عمل البرنامج. على سبيل المثال، برنامج فوتوشوب وإليستريتور لا يسمحان بتثبيت أي نافذة إسكربت داخل مساحة عملهما، ولكن يمكن تشغيل الإسكربتات من قائمة File. لذلك، لن تظهر الإسكربتات التي تم تثبيتها في قائمة Window. على عكس برنامج أفتر إفكتس، الذي يسمح بتثبيت الإسكربتات في مساحة العمل بسهولة.
لذلك لن تجد الإسكربتات في قائمة Window في هذين البرنامجين، لأنهما لا يسمحان بتثبيت الإسكربتات في مساحة العمل. فقط الإكستينشن (Extensions) هي التي يمكن تثبيتها في مساحة عمل فوتوشوب وإليستريتور.
قناة NT Productions هي قناة مميزة جدًا لتعلم برمجة الإسكربتات (Scripts) والإكستينشن (Extensions) والبلجنز (Plugins).
إليك بعض الاقتراحات التي ستفيدك:
قائمة إضافية: قائمة متنوعة تحتوي على الكثير من الفيديوهات المفيدة.
يمكنك الاستفادة من ChatGPT 🤖 في كتابة الإسكربتات، ولكن من الضروري أن تكون لديك معرفة، ولو بسيطة، بالأكواد حتى تتمكن من تعديل الأكواد التي يقدمها لك لتلبي احتياجاتك، وكذلك لحل أي مشكلات قد تواجهك حيث:
يمكنك طلب إنشاء إسكربت من البداية.
ملحوظة: عندما تطلب من الذكاء الاصطناعي إنشاء إسكربت لبرنامج معيّن، لابد أن توضّح له أن هذا الإسكربت سيكون بلغة جافا سكربت لبرنامج أدوبي، وتذكر له اسم البرنامج. والسبب كما شرحت سابقًا هو أن لغة جافا سكربت المستخدمة في الإسكربتات داخل برامج أدوبي قديمة بعض الشيء، ولا تدعم كل ميزات جافا سكربت الحديثة الخاصة بالويب. لذلك، عليك توضيح هذه النقطة حتى لا تواجه أخطاء في البداية قد لا تعرف سببها.
على سبيل المثال: إذا أردت إنشاء إسكربت بلغة جافا سكربت لبرنامج من برامج أدوبي وليكن مثلا أفترإفكتس يحتوي على واجهة مستخدم بها مربع لكتابة النص وزر. عند الضغط على الزر، يقوم الإسكربت بإنشاء طبقة نص تحتوي على النص المكتوب في مربع النص الي غير ذلك من مهام تريدها.
// تصميم واجهة الإسكربت var window = new Window("palette", "Simple Script", undefined); window.orientation = "column"; window.alignChildren = ["center", "center"]; // إضافة زر إلى نافذة الإسكربت var button = window.add("button", undefined, "Add Text Layer"); // إضافة وظيفة إلى الزر button.onClick = function () { // الحصول على التركيبة النشطة var comp = app.project.activeItem; if (comp && comp instanceof CompItem) { // إضافة طبقة نصية comp.layers.addText("وانتصرت غزة"); } else { // تنبيه إذا لم تكن هناك تركيبة نشطة alert("Please open a composition!"); } }; // عرض نافذة الإسكربت window.show();
إذا قمت بنسخ الكود أعلاه ووضعه في ExtendScript Toolkit، ثم قمت باختيار After Effects وتشغيل الكود
سيتم إنشاء نافذة مستخدم باسم Simple Script وبداخل هذه النافذة زر باسم Add Text Layer إذا ضغطت علي هذا الزر سيقوم بإنشاء طبقة نص “وانتصرت غزة” كما هو موضح في الصورة:.
// إنشاء نافذة جديدة تحتوي على واجهة المستخدم var win = new Window("palette", "Text Layer Creator", undefined); win.orientation = "column"; win.alignChildren = ["fill", "top"]; win.spacing = 10; win.margins = 16; // إضافة لوحة داخل النافذة تحتوي على الخيارات var panel1 = win.add("panel", undefined, "Create Text Layer"); panel1.orientation = "column"; panel1.alignChildren = ["fill", "top"]; panel1.spacing = 10; panel1.margins = 10; // إضافة مجموعة لإدخال النص var group1 = panel1.add("group"); group1.orientation = "row"; group1.alignChildren = ["fill", "center"]; group1.add("statictext", undefined, "Text:"); var textInput = group1.add("edittext", undefined, "Enter your text here"); textInput.preferredSize.width = 150; textInput.preferredSize.height = 60; // إضافة مجموعة لإدخال المدة الزمنية var group2 = panel1.add("group"); group2.orientation = "row"; group2.alignChildren = ["fill", "center"]; group2.add("statictext", undefined, "Duration (sec):"); var durationInput = group2.add("edittext", undefined, 5); durationInput.preferredSize.width = 50; // إضافة زر لتفعيل العملية var addButton = win.add("button", undefined, "Add Text Layer"); // وظيفة الزر عند الضغط عليه addButton.onClick = function () { app.beginUndoGroup("Add Text Layer"); var comp = app.project.activeItem; if (comp && comp instanceof CompItem) { var textValue = textInput.text; var duration = parseFloat(durationInput.text); if (!isNaN(duration) && duration > 0) { var textLayer = comp.layers.addText(textValue); textLayer.inPoint = comp.time; textLayer.outPoint = comp.time + duration; } else { alert("Please enter a valid duration!"); } } else { alert("Please open a composition!"); } app.endUndoGroup(); }; // عرض النافذة في منتصف الشاشة win.center(); win.show();
إذا قمت بنسخ الكود أعلاه ووضعه في ExtendScript Toolkit، ثم اخترت برنامج After Effects وقمت بتشغيل الكود:
سيتم إنشاء نافذة مستخدم باسم Text Layer Creator، وبداخل هذه النافذة:
كما هو موضح في الصورة.
يمكنك التعديل وإضافة المزيد من المزايا إلى الإسكربتات التي زودتك بها للتدرب عليها وتخصيص وظيفتها كما تريد.
جرب التعديلات عليها بشكل متكرر لتتعلم كيف تعمل الأكواد، وتحسن مهاراتك في كتابة الإسكربتات. يمكنك مثلاً:
كلما تدربت أكثر، زادت خبرتك وأصبحت قادراً على إنشاء إسكربتات تناسب متطلباتك.
للانضمام إلى النقاشات والاستفادة من خبرات الآخرين:
نصيحة أخيرة يا صديقي: برمجة الإسكربتات تحتاج إلى الكثير من التجارب والصبر على الأخطاء التي قد تواجهك. فبالتجربة المستمرة والتعلم من الأخطاء، ستتطور وتتقدم في هذا المجال. هذه هي الطريقة التي تعلمت بها أنا أيضًا.
تم الاستعانة ببعض المعلومات في كتابة هذه المقالة من موقع Heybrew الرائع هذه هي المقالات التي تم الاستعانة بها:
إن شاء الله سوف نتحدث في مقالة قادمة عن:
أتمنى ألا أكون قد أطلت عليك. ولو في أي حاجة محتاج تسألني عنها في حدود معلوماتي البسيطة، ابعتلي على الإيميل ده: support@ahmedabdallah.net وبإذن الله مش هتأخر.
ابدأ بإذن الله، وجرب كتير، وبإذن الله هتطلع بنتائج وسكربتات جامدة.
ما تنساناش من دعواتك، ولو تعرف حد محتاج يتعلم برمجة الإسكربتات، أكيد ما تنساش تشارك معاه المقالة.
بالتوفيق يا رب ودعواتك لي بظهر الغيب، بالتوفيق والقبول.
إِذَا مَاتَ ابنُ آدم انْقَطَعَ عَنْهُ عَمَلُهُ إِلَّا مِنْ ثَلَاثٍ: صَدَقَةٍ جَارِيَةٍ، أو عِلْمٍ يُنْتَفَعُ بِهِ، أَوْ وَلَدٍ صَالِحٍ يَدْعُو لَهُ. رَوَاهُ مُسْلِمٌ.
اللهم إننا لا نملك إلا الثانية، فتقبلها منا يارب، وانفع بنا، وارزقنا يارب الأولى والثالثة، واجعلهم يارب في ميزان حسناتنا في الحياة وبعد الممات🤲.
شكراً لأنك استثمرت وقتك في قراءة شي مفيد.