مستخدم:Alfas11/AppleScript
آبل اسكربت (بالإنجليزية: AppleScript) هي لغة برمجة نصية أنشأتها شركة آبل، وتم دمجها في نظام التشغيل ماك أو إس، و تهدف إلى العمل بالتوازي مع واجهة المستخدم الرسومية.[1]
نظرة عامة
[عدل]AppleScript هي لغة برمجة نصية تم تطويرها بواسطة أبل لإجراء اتصالات بين التطبيقات (IAC) باستخدام أحداث أبل.[2][3] ترتبط AppleScript بأحداث أبل ولكنها تختلف عنها. تم تصميم أحداث أبل لتبادل البيانات والتحكم في التطبيقات الأخرى من أجل أتمتة المهام المتكررة.
تمتلك AppleScript بعض قدرات المعالجة الخاصة بها ، بالإضافة إلى إرسال واستقبال أحداث أبل إلى التطبيقات. يمكن لـ AppleScript إجراء العمليات الحسابية الأساسية ومعالجة النصوص ، وهي قابلة للتوسيع ، مما يسمح باستخدام إضافات البرمجة النصية التي تضيف وظائف جديدة إلى اللغة. ومع ذلك ، تعتمد AppleScript بشكل أساسي على وظائف التطبيقات والعمليات للتعامل مع المهام المعقدة. كلغة أوامر منظمة ، يمكن مقارنة AppleScript بشل يونكس أو Microsoft Windows Script Host أو IBM REXX ولكنها تختلف عن الثلاثة. حقيقة أن تطبيقات ماكنتوش تنشر "قواميس" للكائنات والعمليات القابلة للتوجيه;ضروري جداً حتى يتمكن أبل سكربت من تأدية وظائفه.
يحتوي AppleScript على بعض عناصر البرمجة الإجرائية ، والبرمجة الموجهة للكائنات (خاصة في إنشاء كائنات النص البرمجي) ، واتجاهات برمجة اللغة الطبيعية في تركيبها ، ولكنها لا تتوافق تمامًا مع أي من نماذج البرمجة هذه.[3]:xxvi
تاريخ
[عدل]في أواخر الثمانينيات من القرن الماضي ، اعتبرت شركة أبل استخدام لغة البرمجة HyperTalk الخاصة بـ HyperCard كلغة تطوير قياسية للمستخدم النهائي، عبر الشركة وضمن نظام تشغيل Mac OS الكلاسيكي ، وكذلك لتمكين التواصل بين العمليات الخاصة بمنتجات Apple مع عمليات المنتجات الأخرى.[4] يمكن للمبتدئين استخدام HyperTalk لبرمجة مكدس HyperCard. أدرك مهندسو أبل أنه يمكن تصميم لغة برمجة نصية مماثلة ، ولكن أكثر توجهاً للكائنات ، لاستخدامها مع أي تطبيق ، وقد وُلد مشروع AppleScript كبرنامج منبثق عن جهد بحثي لتحديث نظام Macintosh ككل وأصبح أخيرًا جزءًا من النظام 7 (Mac OS 7).[5][6]
تم إصدار AppleScript في أكتوبر 1993 كجزء من نظام 7.1.1 (نظام ماك 7 Pro ، أول ترقية رئيسية للنظام 7).[6] كان QuarkXPress (الإصدار 3.2) من أوائل التطبيقات البرمجية الرئيسية التي دعمت AppleScript. أدى هذا بدوره إلى اعتماد AppleScript على نطاق واسع في عالم النشر وما قبل الطباعة ، وغالبًا ما يربط معًا مهام سير العمل المعقدة. كان هذا عاملاً رئيسيًا في الحفاظ على موقع Macintosh المهيمن في النشر وما قبل الطباعة ، حتى بعد نقل QuarkXpress وتطبيقات النشر الأخرى إلى Microsoft Windows.
بعد بعض الشكوك بشأن مستقبل AppleScript في الجيل التالي من نظام التشغيل من أبل ، أدى الانتقال إلى Mac OS X (حوالي 2002) وأطر عمل Cocoa إلى زيادة فائدة ومرونة AppleScript بشكل كبير. تتيح تطبيقات Cocoa لمطوري التطبيقات تحقيق قابلية البرمجة الأساسية لتطبيقاتهم بأقل جهد ممكن ، مما يؤدي إلى زيادة عدد التطبيقات القابلة للبرمجة مباشرة. وفي الوقت نفسه ،وبسبب التحول إلى أسس يونكس وقدرة AppleScript على تشغيل أوامر Unix مباشرة ، باستخدام الأمر do shell script
[7] أتاح ذلك لأبل سكريبت تحكم أكبر بكثير في نظام التشغيل نفسه.[3]:863
تم إصدار AppleScript Studio مع نظام التشغيل Mac OS X 10.2 كجزء من Xcode (بيئة برمجية) ،ولاحقاً تم إصدار إطار العمل AppleScriptObjC ضمن نظام التشغيل Mac OS X 10.6 ، وكل ذلك سمح للمستخدمين بإنشاء تطبيقات Cocoa باستخدام AppleScript.[3]:969
في أكتوبر 2016 ، غادر سال سوجويان ، مدير منتج AppleScript ومبشر الأتمتة ، شركة أبل عندما تم إلغاء منصبه "لأسباب تتعلق بالعمل".[8] استجاب الخبراء في مجتمع Mac مثل جون غروبر و Andy Ihnatko بشكل عام بقلق ، وشككوا في التزام أبل تجاه مجتمع المطورين والمستخدمين المحترفين.[9] رد نائب الرئيس الأول لهندسة البرمجيات في أبل ، كريج فيديريغي ، في رسالة بريد إلكتروني قائلاً: "لدينا كل النية لمواصلة دعمنا لتقنيات الأتمتة العظيمة في macOS!" ، على الرغم من أن جيف جاميت في Mac Observer رأى أن ذلك لم يفعل شيئًا يذكر لتهدئة شكوكه حول مستقبل أتمتة Apple بشكل عام و AppleScript بشكل خاص.[10] في الوقت الحالي ، تظل AppleScript أحد مكونات تقنيات أتمتة macOS ، جنبًا إلى جنب مع Automator و Shortcuts و Services و shell scripting.
مفاهيم أساسية
[عدل]التعليقات برمجياً
[عدل]يمكن عمل التعليقات بطرق متعددة. يمكن أن يبدأ التعليق المكون من سطر واحد بشرطتين (--). في AppleScript 2.0 ، الذي تم إصداره لأول مرة في نظام التشغيل Mac OS X Leopard ، قد يبدأ أيضًا بعلامة الرقم (#). يسمح هذا بتخزين برنامج نصي AppleScript قائم بذاته كملف نصي قابل للتنفيذ يبدأ بسطر #!/usr/bin/osascript
مثال:
- هذا تعليق من سطر واحد
# وايضاً هذا! (في Mac OS X Leopard أو أحدث)
بالنسبة إلى التعليقات التي تشغل سطورًا متعددة ، تستخدم AppleScript أقواسًا بداخلها علامات نجمية. مثال:
(* هذا
تعليق
متعدد
السطور *)
برنامج أهلا بالعالم
[عدل]في AppleScript ، يمكن كتابة البرنامج التقليدي أهلا بالعالم(!Hello World) في عدة أشكال مختلفة ، بما في ذلك:
display dialog "Hello, world!" -- نافذة منبثقة بها زران "موافق" و "إلغاء"
-- أو
display alert "Hello, world!" --نافذة منبثقة بها زر واحد "موافق" وأيقونة تمثل التطبيق الذي يعرض التنبيه
-- أو
say "Hello, world!" -- رسالة صوتية باستخدام صوت الكمبيوتر المركب
-- أو
return "Hello, world!"
يحتوي AppleScript على العديد من خيارات واجهة المستخدم ، بما في ذلك الحوارات والتنبيهات وقائمة الاختيارات. (يشير الرمز ¬ ، الناتج عن كتابة ⌥ Option+return في Script Editor ، إلى استمرار جملة واحدة عبر عدة أسطر.)
-- نافذة حوار
set dialogReply to display dialog ¬
"حوار نصي" default answer ¬
"أجابة نصية" hidden answer false ¬
buttons {"تخطي", "نعم", "إلغاء"} ¬
default button ¬
"نعم" cancel button ¬
"تخطي" with title ¬
"عنوان النافذة" with icon note ¬
giving up after 15
-- أختيار من قائمة
set chosenListItem to choose from list {"A", "B", "3"} ¬
with title "List Title" ¬
with prompt "Prompt Text" ¬
default items "B" ¬
OK button name "Looks Good!" ¬
cancel button name "Nope, try again" ¬
multiple selections allowed false ¬
with empty selection allowed
-- أظهار تنبية
set resultAlertReply to display alert "Alert Text" ¬
as warning ¬
buttons {"تخطي", "موافق", "إلغاء"} ¬
default button 2 ¬
cancel button 1 ¬
giving up after 2
يمكن لكل طريقة تفاعل للمستخدم إرجاع قيم الأزرار التي تم النقر عليها أو العناصر المختارة أو النص الذي تم إدخاله لمزيد من المعالجة. فمثلا:
display alert "Hello, world!" buttons {"رفض", "قبول"}
set theAnswer to button returned of the result
if theAnswer is "قبول" then
beep 5
else
say "عفواً!"
end if
استعارات اللغة الطبيعية
[عدل]في حين أن أحداث أبل هي وسيلة لإرسال الرسائل إلى التطبيقات ، فإن AppleScript هي لغة معينة مصممة لإرسال أحداث أبل. تماشياً مع هدف سهولة الاستخدام للمبتدئين ، تم تصميم لغة AppleScript على استعارة اللغة الطبيعية ، تمامًا كما تم تصميم واجهة المستخدم الرسومية على استعارة سطح المكتب. يجب أن يكون AppleScript المكتوب جيدًا واضحًا بما يكفي ليقرأه ويفهمه أي شخص ، كما يجب تحريره بسهولة. تعتمد اللغة إلى حد كبير على لغة HyperTalk التابعة لـ HyperCard ، والتي امتدت لتشير ليس فقط إلى عالم HyperCard للبطاقات والمكدسات ، ولكن أيضًا من الناحية النظرية إلى أي مستند. تحقيقًا لهذه الغاية ، قدم فريق AppleScript نموذج كائن حدث أبل (AEOM) ، والذي يحدد الكائنات التي "يعرفها" أي تطبيق معين.
جوهر لغة AppleScript هو استخدام المصطلحات التي تعمل كأسماء وأفعال يمكن دمجها. على سبيل المثال ، بدلاً من فعل مختلف لطباعة صفحة أو مستند أو نطاق من الصفحات (مثل printPage و printDocument و printRange) ، تستخدم AppleScript فعل "print" واحد يمكن دمجه مع كائن ، مثل صفحة أو وثيقة أو مجموعة من الصفحات.
print page 1
print document 2
print pages 1 thru 5 of document 2
بشكل عام ، تحدد AEOM عددًا من الكائنات - مثل مستند "document" أو فقرة "paragraph" - والإجراءات المقابلة - مثل "cut" و "close". يحدد النظام أيضًا طرقًا للإشارة إلى خصائص الكائنات ، بحيث يمكن للمرء الرجوع إلى "الفقرة الثالثة من المستند" يوم جيد "--"third paragraph of the document 'Good Day'"، أو" لون الكلمة الأخيرة من النافذة الأمامية "--"color of the last word of the front window". يستخدم AEOM تطبيق القاموسdictionary" لربط أحداث أبل بمصطلحات يمكن للبشر قراءتها ، مما يسمح بالترجمة ذهابًا وإيابًا بين أحداث AppleScript القابلة للقراءة البشرية وأحداث أبل ذات الرمز الثانوي. لاكتشاف عناصر البرنامج القابلة للبرمجة ، يمكن عرض قواميس التطبيقات المدعومة. (في تطبيقي Xcode و Script Editor ، يوجد هذا ضمن File → Open Dictionary.)
لتحديد التطبيق المقصود أن يكون هدفًا لمثل هذه الرسالة ، تستخدم AppleScript بنية "tell":
tell application "Microsoft Word"
quit
end tell
بدلاً من ذلك ، يمكن التعبير عن tell في سطر واحد باستخدام المصدر:
tell application "Microsoft Word" to quit
بالنسبة للأحداث في (activate و open و reopen و close و print و quit) ، قد يتم ألحاق التطبيق ككائن مباشر لأوامر متعدية:
quit application "Microsoft Word"
يمكن التعبير عن مفهوم التسلسل الهرمي للكائن باستخدام الكتل المتداخلة:
tell application "QuarkXPress"
tell document 1
tell page 2
tell text box 1
set word 5 to "Apple"
end tell
end tell
end tell
end tell
يمكن أيضًا التعبير عن مفهوم التسلسل الهرمي للكائن باستخدام عبارات الجر المتداخلة:
pixel 7 of row 3 of TIFF image "my bitmap"
والتي يمكن التعبير عنها بلغة برمجة أخرى على أنها استدعاءات طريقة متسلسلة ، كما هو الحال في هذا الكود المزيف (للفهم فقط):
getTIFF("my bitmap").getRow(3).getPixel(7);
يتضمن AppleScript بناء الجملة للعد الترتيبي ، مثلاً: 'الفقرة الأولى' "the first paragraph" ، وكذلك الأساسي ،مثلاً:'الفقرة واحد' "paragraph one". وبالمثل ، يمكن الإشارة إلى الأرقام نفسها على أنها نص أو رقميًا ، "five"و "fifth" و "5" كلها مدعومة ؛ هم مرادفات في AppleScript. أيضًا ، يمكن استخدام كلمة "the" قانونيًا في أي مكان في البرنامج النصي من أجل تعزيز إمكانية القراءة: ليس لها أي تأثير على وظائف البرنامج النصي.
أمثلة
[عدل]حاسبة أمنة من الفشل:
tell application "Finder"
-- Set variables
set the1 to text returned of (display dialog "1st" default answer "Number here" buttons {"Continue"} default button 1)
set the2 to text returned of (display dialog "2nd" default answer "Number here" buttons {"Continue"} default button 1)
try
set the1 to the1 as integer
set the2 to the2 as integer
on error
display dialog "You may only input numbers into a calculator." with title "ERROR" buttons {"OK"} default button 1
return
end try
-- Add?
if the button returned of (display dialog "Add?" buttons {"No", "Yes"} default button 2) is "Yes" then
set ans to (the1 + the2)
display dialog ans with title "Answer" buttons {"OK"} default button 1
say ans
-- Subtract?
else if the button returned of (display dialog "Subtract?" buttons {"No", "Yes"} default button 2) is "Yes" then
set ans to (the1 - the2)
display dialog ans with title "Answer" buttons {"OK"} default button 1
say ans
-- Multiply?
else if the button returned of (display dialog "Multiply?" buttons {"No", "Yes"} default button 2) is "Yes" then
set ans to (the1 * the2)
display dialog ans with title "Answer" buttons {"OK"} default button 1
say ans
-- Divide?
else if the button returned of (display dialog "Divide?" buttons {"No", "Yes"} default button 2) is "Yes" then
set ans to (the1 / the2)
display dialog ans with title "Answer" buttons {"OK"} default button 1
say ans
else
delay 1
say "You haven't selected a function. The operation has cancelled."
end if
end tell
تسلسل بسيط لمربع حوار اسم المستخدم و كلمة المرور. هنا ، اسم المستخدم هو احمد وكلمة المرور app123:
tell application "Finder"
set passAns to "app123"
set userAns to "احمد"
if the text returned of (display dialog "Username" default answer "") is userAns then
display dialog "Correct" buttons {"Continue"} default button 1
if the text returned of (display dialog "Username : John" & return & "Password" default answer "" buttons {"Continue"} default button 1 with hidden answer) is passAns then
display dialog "Access granted" buttons {"OK"} default button 1
else
display dialog "Incorrect password" buttons {"OK"} default button 1
end if
else
display dialog "Incorrect username" buttons {"OK"} default button 1
end if
end tell
ادوات التطوير
[عدل]موارد آبل اسكربت
[عدل]أساسيات اللغة
[عدل]أسلوب البرمجة النصية المفتوح
[عدل]أحد الجوانب المهمة لتطبيق AppleScript هو (Open Scripting Architecture (OSA.[11] توفر Apple OSA للغات البرمجة النصية الأخرى ومنتجات البرمجة النصية/الأتمتة التابعة لجهات خارجية مثل QuicKeys و UserLand Frontier ، للعمل في حالة متساوية مع AppleScript. تم تنفيذ AppleScript كمكون برمجة نصية ، وكانت المواصفات الأساسية لربط هذه المكونات بـ OSA عامة ، مما يسمح للمطورين الآخرين بإضافة مكونات البرمجة النصية الخاصة بهم إلى النظام. ستعمل واجهات برمجة التطبيقات الخاصة بالعميل العام لتحميل النصوص البرمجية وحفظها وتجميعها بنفس الطريقة لجميع هذه المكونات ، مما يعني أيضًا أن التطبيقات الصغيرة والقطيرات يمكنها الاحتفاظ بنصوص برمجية في أي من لغات البرمجة النصية هذه.
إحدى ميزات OSA هي إضافات البرمجة النصية ، أو OSAX لـ Open Scripting Architecture eXtension ، المستوحاة من أوامر HyperCard الخارجية.[12]إضافات البرمجة النصية هي مكتبات تسمح للمبرمجين بتوسيع وظيفة AppleScript. الأوامر المضمنة كإضافات نصية متاحة على مستوى النظام ، ولا تعتمد على أحد التطبيقات . محرر AppleScript قادر أيضًا على تحرير وتشغيل بعض لغات OSA مباشرة.
جافا سكريبت للأتمتة
[عدل]ضمن OS X Yosemite والإصدارات الأحدث من ماك او اس ، يظل مكون (JavaScript for Automation (JXA هو لغة OSA الوحيدة الجادة البديلة لـ AppleScript ،[13] على الرغم من أن إصدارات ماكنتوش من بيرل و بايثون و روبي و Tcl تدعم جميعها وسائل العمل الأصلية مع أحداث أبل دون أن تكون مكونات OSA.[14]:516
توفر JXA أيضًا واجهة لغة أجنبية Objective-C (ولغة C).[13] نظرًا لكونها بيئة تعتمد على محرك JavaScriptCore الخاص بـ WebKit ، فإن مجموعة ميزات JavaScript متزامنة مع محرك متصفح Safari الخاص بالنظام. توفر JXA نظام وحدة JavaScript ويمكن أيضًا استخدام وحدات CommonJS عبر browserify.[15]
مراجع
[عدل]- ^ "معلومات عن آبل اسكربت على موقع id.loc.gov". id.loc.gov. مؤرشف من الأصل في 2020-04-08.
- ^ Goldstein، Adam (2005). AppleScript: the missing manual. Sebastopol, CA: O'Reilly Media. ISBN:0596008503. OCLC:56912218.
- ^ ا ب ج د Sanderson، Hamish؛ Rosenthal، Hanaan (2009). Learn AppleScript: the comprehensive guide to scripting and automation on Mac OS X (ط. 3rd). Berkeley: Apress. DOI:10.1007/978-1-4302-2362-7_27. ISBN:9781430223610. OCLC:308193726.
- ^ Flynn، Laurie (27 فبراير 1989). "Apple Ponders Standardizing on HyperTalk". InfoWorld. ج. 11 رقم 9. ص. 31.
- ^ https://books.google.com/books?id=_40AkCe9nOUC
- ^ ا ب Cook، William (2007). "AppleScript" (PDF). History of Programming Languages (HOPL III). Proceedings of the third ACM SIGPLAN conference. Association for Computing Machinery: 1–21. DOI:10.1145/1238844.1238845. ISBN:9781595937667. S2CID:220938191.
- ^ "AppleScript Language Guide commands reference: do shell script". developer.apple.com. اطلع عليه بتاريخ 2019-09-15.
- ^ Lovejoy، Ben (17 نوفمبر 2016). "Sal Soghoian says 'ask Apple' about future of Mac user automation as company eliminates position". 9to5mac.com. اطلع عليه بتاريخ 2017-05-08.
- ^ Evans، Jonny (17 نوفمبر 2016). "Does Apple really want to kill Automator, AppleScript? Shock termination of veteran Apple developer guru sends shockwaves across the Mac community". Computerworld.com. اطلع عليه بتاريخ 2017-05-08.
- ^ Gamet، Jeff (23 نوفمبر 2016). "Apple's intent isn't the same as committing to mac automation". macobserver.com. اطلع عليه بتاريخ 2017-05-08.
- ^ "AppleScript Overview: Open Scripting Architecture". developer.apple.com. اطلع عليه بتاريخ 2017-05-08.
- ^ "Technical Note TN1164: Scripting Additions for Mac OS X". developer.apple.com. اطلع عليه بتاريخ 2017-05-08.
- ^ ا ب Siracusa، John (16 أكتوبر 2014). "OS X 10.10 Yosemite: The Ars Technica Review: JavaScript automation". Ars Technica. اطلع عليه بتاريخ 2017-05-08.
- ^ Neuburg، Matt (2006). AppleScript: the definitive guide (ط. 2nd). Beijing: O'Reilly Media. ISBN:0596102119. OCLC:68694976.
- ^ "Importing Scripts". GitHub. JXA-Cookbook. 6 ديسمبر 2019. اطلع عليه بتاريخ 2019-12-09.