اپل اسکریپت (به انگلیسی: AppleScript) یکزبان اسکریپت نویسیاست که توسط شرکت اپل ساخته شدهاست و در مک اواس از زمان system 7 استفاده میشود. کلمهٔ " اپل اسکریپت " ممکن است به خود سیستم ویرایشگری یا یک متن منحصر به فرد نوشته شده با زبان اپل اسکریپت اشاره کند.
اپل اسکریپت عمدتاً یک زبان اسکریپتی توسعه داده شده توسط کمپانی اپل است برای انجام کارهای ارتباط بین پردازشی با استفاده از AppleEvents. اپل اسکریپت با AppleEvents مرتبط است اما متفاوت هستند. AppleEvents برای رد و بدل کردن اطلاعات و کنترل کردن بقیهٔ برنامهها به منظور خودکارسازی عملیات تکراری طراحی شدهاست. اپل اسکریپت یک سری محدودیتهای پردازشی خاص خود را علاوه بر فرستادن و دریافت AppleEventsها به برنامههای دیگر دارد. اپل اسکریپت محاسبات ابتدایی و پردازشهای متنی پیچیدهای را میتواند انجام دهد و اینها قابل گسترش هستند بهطوریکه میتوان کارکردهای ویرایشی متن را به خود زبان اضافه کرد. هرچند اساساً اپل اسکریپت به کارکرد برنامهها و پردازشها برای کنترل عملیات پیچیده متکی است. به عنوان یک زبانساختیافته، اپل اسکریپت قابل مقایسه با پوسته یونیکس - Windows Script Host و Rexx در کارکردشان است اما از همهٔ این سه مورد منحصر به فرد است. اساسیترین کارکرد آن این است که برنامههای مکینتاش، دیکشنریهایی را با اشیاء و عملیاتی آدرس دار عرضه دهند.
اپل اسکریپت یکسری المانهای برنامهنویسی شیءگرا، به خصوص در ساختمان اشیای متنی و گرایشهایی از برنامهنویسی زبان طبیعی در نحو را دارد اما بهطور مستقیم از هیچکدام از این دو دسته پیروی نمیکند.
تاریخچه
پروژهٔ اپل اسکریپت حاصلی از پروژهٔ تمام شدهٔ هایپرکارد است. هایپرکارد شامل یک زبان اسکریپتیِ مبتنی بر زبان انگلیسی به نام هایپرتاک بود که برای برنامهنویسی یک پشته هایپرکارد استفاده میشد. مهندسان کمپانی اپل متوجه شدند که یک زبان ویرایشگر مشابه به منظور استفاده در هر نوع برنامهای میتواند طراحی شود و بنابراین پروژهٔ اپل اسکریپت به عنوان بخشی از سیستم هفت متولد شد.
اپل اسکریپت در ماه اکتبر سال ۱۹۹۳ به عنوان بخشی از سیستم ۷٫۱٫۱ (اولین به روزرسانی اصلی سیستم ۷) به بازار عرضه شد. کوارک اکسپرس (ورژن ۳٫۲) یکی از اولین و اصلیترین نرمافزارهایی بود که اپل اسکریپت را پشتیبانی میکرد. این باعث شد که اپل اسکریپت بهطور گستردهای منتشر شود. این مهمترین عاملی بود در حفظ جایگاه مکینتش در پابلیشینگ، حتی بعداً کوارک اکسپرس و سایر برنامهها به ویندوزِ مایکروسافت رو کردند.
بعد از مقداری شک در مورد آیندهٔ اپل اسکریپت روی نسل بعدی سیستم عاملهای اپل، انتقال آن به اواس ده مک (حدود سال ۲۰۰۲) و رابط برنامهنویسی کوکوِ یِ آن، قابلیت استفاده و انعطاف اپل اسکریپت را به مقدار زیادی افزایش داد. برنامههای کوکو این اجازه را به برنامه نویسان میدهد که با تلاش کم، قابلیتهای اسکریپتی ابتدایی را برای برنامهشان، با زیاد کردن تعداد برنامههایی که مستقیماً متنی شدنی هستند، پیادهسازی کنند. بهطور همزمان، جابجایی به زیربنای یونیکس و توانایی اپل اسکریپت برای اجرای مستقیم دستورهای یونیکس، کنترل اپل اسکریپت را روی خود سیستم عامل افزود. AppleScript Studio روی Mac OS X 10.2 به عنوان قسمتی از Xcode عرضه شد و بعدها با عرضهٔ AppleScriptObjC framework روی Mac OS X 10.6 کاربران توانستند با استفاده از اپل اسکریپت برنامههای محلی «کوکو» را بنویسند.
اپل اسکریپت بخشی از تکنولوژی خودکارسازی Mac OS X به همراه Shell script و Automator (software) است.
مفاهیم اولیه
اپل اسکریپت به عنوان یک زبان اسکریپتی accessible end-user طراحی شد که به کاربر مکانیزمی هوشمند را برای کنترل برنامهها، دسترسی و تغییر دادهها ارائه میدهد. اپل اسکریپت از Apple Eventها استفاده میکند که یک سری مدل دادههای استاندارد شده هستند که سیستم عامل مکینتاش برای فرستادن اطلاعات به برنامهها استفاده میکند. Apple Eventها میگذارند تا یک متن بتواند با چند برنامه همزمان کار کند و دادهها بین آنها رفتوآمد کنند تا عملیات پیچیده بدون دخالت انسان انجام شوند. برای مثال، یک اپل اسکریپت برای ساختن یک گالریِ وبِ ساده باید کارهای زیر را انجام دهد:
بازکردن یک عکس در یک برنامهٔ ویرایش عکس (با فرستادن یک Open File Apple Event به آن برنامه)
دستور دادن به برنامهٔ ویرایش عکس برای ویرایش عکس (مثلاً کم کردن وضوح یا اضافه کردن لبه یا اضافه کردن یک امتیاز به عکس)
دستور دادن به برنامهٔ ویرایش عکس برای ذخیره عکس تغییر داده شده در یک فایل داخل یک پوشه (با فرستادن Save و/یا Close Apple Event به آن برنامه)
فرستادن آدرس یک فایل جدید (با یکApple Event دیگر) به یک برنامه ویرایشگر متن یا ویرایشگر وب
دستور به آن برنامهٔ ویرایشگر برای نوشتن یک لینک برای عکس داخل یک فایل HTML.
تکرار دستورهای فوق برای تمامی عکسهای داخل یک پوشه (صدها یا هزاران عکس).
بارگذاری فایل HTML و پوشهٔ عکسهای اصلاح شده روی یک وبسایت با فرستادن Apple Eventها به یک FTP client , با استفاده از دستورهای خود اپل اسکریپت یا با فرستادن Apple Eventها به یک Unix ftp utility.
برای کاربر، صدها یا هزاران قدم در چندین برنامه به تنها عمل اجرا کردن یک متن کاهش یافتهاست و عملیات در زمان بسیار کمتری بدون هیچگونه خطای انسانی صورت میگیرد. یک متن بزرگ و پیچیده فقط یکبار اجرا میشود درحالیکه متنهای دیگر بارها استفاده میشوند.
بخشهای اپل اسکریپتِ یک برنامه داخل لغتنامهٔ اسکریپتی آن برنامه قابل رویتهستند که داخل هرگونه ویرایشگر متنی قابل دیدناند. این بخشها بهطور کلی در گروههایی بنا به نزدیکی کارکردشان قرار دارند. دو نوع پایهای بخشها وجود دارند: «کلاسها» و «دستورها». کلاسها، اشیایی قابل متن شدن هیتند. برای مثال، یک برنامهٔ ویرایش متن یکسری کلاسهایی برای پنجرهها، سندها و متنها دارد و این کلاسها یک سری ویژگیها دارند(property) که قابل تغییرند (سایز پنجره، پس زمینهٔ سند، سایز خطوط متن و ...) یا ممکن است کلاسهایی دیگر را هم شامل شوند (یک پنجره یک یا چند سند دارد، یک سند متن دارد، یک شی متن پاراگرافها و کلمات و کاراکترهایی دارد). بهطور متضاد، «دستورها»، دستورهایی هستند که میتواند به اشیای متن شدنی داده شوند. فرم کلی یک بلوک اپل اسکریپت اینگونه است که به یک شی متن شدنی گفته میشود که یک دستور را اجرا کند.
همهٔ برنامههای متن شدنی در یک سری دستورهای ابتدایی و اشیاء مشترکند(standard suite). دستورهایی برای بازکردن، بستن یا ذخیره یک فایل، برای چاپ کردن چیزی، برای خروج، برای اختصاص دادهها به متغیرها. مانند یک شی برنامهٔ ابتدایی که خصوصیات متن شدنی یک برنامه را میدهد. بسیاری از برنامهها تعدادی زیادی از توابعی با کارکردهای تقریباً مشابه را دارند که با اجرای هر عملی که خود برنامه میتواند انجام دهد همخوانی دارند. در موارد استثنایی، برنامهها ممکن است یک سری plugin که داخل لغتنامهٔ اسکریپتی خودشان است را پشتیبانی کنند.
اپل اسکریپت با توانایی در ساخت یک متن به وسیله درک مستقیم و ضبط حرکات کاربر، طراحی شد. هنگمی که ویرایشگر اپل اسکریپت باز است و دکمهٔ رکورد زده شدهاست، هر عملِ کاربر روی کامپیوتر در هر برنامهای که AppleEvents و ضبط اپل اسکریپت را پشتیبانی میکند، به دستورهای مربوطه آنها داخل اپل اسکریپت تبدیل شده و روی پنجرهٔ ویرایش متن قرار میگیرد. متن نهایی میتواند ذخیره یا دوباره اجرا شود تا اعمال اصلی تکرار شوند یا تغییر داده شوند تا بهطور کلی قابل استفاده باشند.
توضیحات (comments)
کامنتها میوانند از چندین راه درج شوند. اگر میخواهید یک کامنت کوچک یک خطه درج کنید، دو عدد (-) یا یک (#) بگذارید. مثل:
--This is a one line comment# So is this!
اگر میخواهید کامنتی بگذارید که بیش از یک خط را میگیرد، به اینگونه با پرانتز و * عمل کنید:
(* This is amultiplelinecomment *)
Hello, world!
در اپل اسکریپت، برنامهٔ "hello,world!" سنتی ما به صورتهای زیادی قابل نوشتن است:
display dialog"Hello, world!"-- a modal window with “OK” and “Cancel” buttons-- ordisplay alert"Hello, world!"-- a modal window with a single “OK” button and an icon representing the app displaying the alert-- orsay"Hello, world!"-- an audio message using a synthesized computer voice
اپل اسکریپت چندین گزینه برای واسط کاربر(user interface) شامل دیالوگها، زنگهای هشدار و لیستی از انتخابات دارد. (کاراکتر ¬ , با نگه داشتن کلید option و کلید return در ویرایشگر متن، نشانگر ادامه دار بودن یک عبارت داخل چند خط است)
از آنجاییکه AppleEventها راهی برای فرستادن پیام به برنامهها هستند، اپل اسکریپت یک زبان به خصوص برای فرستادن AppleEventها است. برای پیروی از سنت سیستم عامل مک در راحتی استفاده، زبان اپل اسکریپت بر اساس زبان طبیعی طراحی شدهاست. همانطور که واسط کاربر گرافیکی آن هم با desktop تشابه دارد. یک برنامهٔ خوب نوشته شدهٔ اپل اسکریپت باید به اندازهٔ کافی تمیز و خوانا و قابل درک برای عموم باشد و به راحتی قابل ویرایش باشد. عمدتاً این زبان بر پایهٔ زبان هایپرتاکِ هایپرکارد است که گسترش یافتهٔ آن نه تنها به دنیای کارتها و پشتههای هایپرکارد، بلکه به صورت نظری به هر سندی اشاره دارد. برای همین، تیم اپل اسکریپت AppleEvent Object Model که اشیایی را که هر برنامهای «میشناسدشان» را معرفی کردند.
قلب زبان اپل اسکریپت استفادهٔ کلماتیست که چون اسامی و تفعال عمل میکنند و قابل ترکیب هستند. مثلاً به جای اینکه از فعلی دیگر برای عمل چاپ کردن یک صفعه یا یک سند یا چندین صفحه (printPage, printDocument, printRange) اپل اسکریپت تنها "print" را استفاده میکند که میتواند با object مانند یا صفحه، یک سند یا چندین صفحه ترکیب شود.
بهطور کلی AEOM تعریف یک سری شی است مانند "Document " یا " پاراگراف" یا عملیاتی چون "cut" و "close". این سیستم همچنین روشهایی برای اشاره به خصوصیات (Peoperty)های یک شی را دارد پس کاربر میتواند به "سومین پاراگراف سندی به نام روز خوب" یا " رنگ آخرین کلمهٔ جلوی پنجره" دسترسی داشته باشد.AEOM لغتنامهٔ یک برنامه برای پیوستن Apple Events به کلماتی خوانا برای انسان که اجازهٔ ترجمه از هر دو سو بین اپل ایوِنتهای bytecode و یک اپل اسکریپت خوانا برای انسان میدهد را، استفاده میکند. برای شناخت بخشهایی از برنامه که متن شدنی اند باید لغتنامههایی که آن برنامهها پشتیبانی میکنند، ملاحظه شوند. (در Xcode و برنامههای Script Editor داخل File → Open Dictionary بروید)
برای تعیین کردن اینکه چه برنامهای برای مقصد چنین پیامی مناسب است، اپل اسکریپت از ساختمان "tell" استفاده میکند:
tellapplication"Microsoft Word"quitendtell
به نوبت tell میتواند در یک خط با infinitive نشان داده شود:
tellapplication"Microsoft Word"toquit
برای اتفاقهای داخل"Core Suite" , مثل (activate, open, reopen, close, print, and quit) , برنامه ممکن است چون اشیای مستقیم با دستورهای انتقالی مواجه شود:
quitapplication"Microsoft Word"
مفهوم شئ سلسله مراتبی میهواند داخل بلوکهای تو در تو مطرح شود:
اشیائ سلسله مراتبی را اینطور هم میتوان نشان داد به وسیلهٔ عبارات prepositional:
pixel7ofrow3ofTIFFimage"my bitmap"
که در یک زبان برنامهنویسی دیگر ممکن است به صورت صدا زدن پشت هم متدها مانند سودوکد زیر باشد:
getTIFF("my bitmap").getRow(3).getPixel(7);
اپل اسکریپت شامل نحوی برای شمارش ترتیبی مثل "اولین پاراگراف" و همینطور نحوی برای شمارش کاردینال چون " پاراگراف یک" است. همینطور اعداد هم میتوانند متن یا رقم به حساب بیایند ."five " , "fifth" و "۵" همگی پشتیبانی میشوند و معادل دارند. همینطور کلمهٔ "the " میتواند هرجای متن برای بهبود خوانایی استفاده شود و هیچ اثری بر عملکرد ندارد.
Script editorsها یک محیط برنامهنویسی یکپارچه را برای اپی اسکریپتها فراهم میکنند و شامل ابزاری برای نوشتن، چک کردن صحّت، کامپایل، اجرا و debug اسکریپتها دارند. آنها همینطور مکانیسمی برای بازکردن و دیدن لغتنامههای اپل اسکریپت از برنامههای اسکریپت شدنی و ذخیرهٔ اسکریپتها در تعدادی فرمت (compiled script files, application packages, script bundles, and plain text files) دارندو معمولاً قابلیتهایی چون syntax highlighting و تکه کدهای از قبل ننوشته شده را دارند.
AppleScript Editor(ویرایشگر اسکریپت در سیستم عامل x مک قبل از ۱۰٫۶ و yosemite)
ویرایشگری برای اپل اسکریپت در mac os x. اسکریپتها داخل پنجرههای سند ویرایش نوشته میشوند و در آنجا کامپایل و اجرا میشوند و این پنجرهها محیطهای مختلفی برای وارد کردن اطلاعات دارند همینطور برای به اجرا درآوردن نتیجهها و بقیهٔ اطلاعات نیز برای اهداف debug کردن فراهم است. دسترسی به لغتنامههای اسکریپتی و کدهای از پیش نوشته شده داخل منوهای برنامه موجود است. ویرایشگر اپل اسکریپت در yosemit شامل قابلیت نوشتن هم در اپل اسکریپت و هم javaScript است.
Xcode, از شرکت اپل
یک دسته از ابزارهایی با ویژگیهای نزدیک به هم برای توسعه دادن برنامههایی با قابلیتهایی برای ویرایش اپل اسکریپتها یا درست کردن برنامههای تکامل یافتهٔ نوشته شده در زبان اپل اسکریپت.
Smile و smileLab , موجود از طریق (Satimage)
یک نرمافزار رایگانِ third-party , یک محیط برنامهنویسی تبلیغاتی برای اپل اسکریپت که خودش در اپل اسکریپت نوشته شدهاست. اسمایل مجانی است و عمدتاً برای توسعه دهی زبان اپل اسکریپت طراحی شدهاست. smileLab هم یک نرمافزار تبلیغاتی با امکانات اضافی برای آنالیز عددی، کارهای گرافی، اتوماسیون ماشین و کارهای وب است. smile و SmileLab هردو یک روش طبقهبندیِ پنجرههای گوناگون را دارند. پنجرههای اپل اسکریپت برای اجرا کردن و ذخیره فول اسکریپتها و پایانههای اپل اسکریپت برای آزمایش خط به خط کد و پنجرههای یونی-کد برای کار با متون و XML. کاربران میتوانند واسطهای پیچیده، به نام دیالوگها را برای موقعیتهایی که دیالوگهای خود اپل اسکریپت به کارشان نمیاد، درست کنند.
[Script Debugger Script Debugger] از کمپانی [ Late Night Software Late Night Software]
یک محیط برنامه نویسیِ third-party برای اپل اسکریپت.
Script Debugger یک محیط پیشرفته برای اپل اسکریپت است که به نویسندهٔ اسکریپت اجازه میدهد که اپل اسکریپتها را با stepping , breakpointگذاری و قدمگذاری داخل و بیرون توابع، subroutineها، دنبال کردن اثرات روی متغیر هاو ... , debug کند. Script Debugger همچنین یک مرورگر پیشرفتهٔ لغتنامه دارد که این اجازه را به کاربر میدهد که لغتنامه را در عمل و موقعیتهای دنیای واقعی ببیند. این فرا تر از فقط لیست کردن چیزهایی است که لغتنامه میپوشاند بلکه یک نفر میتواند یک سند را داخل Pages باز کند و ببیند که چگونه لغات داخل لغتنامه برای آن سند صدق میکنند و این کار را برای فهم اینکه چه بخشهای لغتنامه را استفاده کند، مفید است.Script Debugger برای ساختن اسکریپتهایی با واسط گرافیکی کاربر ساخته نشدهاست، علاوه بر توانایی ساخت alertها و دیالوگ ای ابتدایی، بیشتر روی کد زدن و debug کردن آنها متمرکز است.
FacePan , از شرکت Late Night Software
یک محیط برنامهنویسی تجارتیِ third-party برای ساختن برنامههای اپل اسکریپت به همراه واسط گرافیکی کاربر. توسعهٔ FacePan در حال حاضر به تعویق انداخته شدهاست.
Script launchers
اپل اسکریپتها میتوانند از درون یک ویرایشگر اسکریپت اجرا شوند ولی معمولاً اجرا کردن آنها بهطور مستقیم، بدون بازکردن یک ویرایشگر اسکریپت مناسبتر است. تعدادی از انتخابها برای این گونه عمل کردن:
Script Menu
منو ی این سیستم گسترده دسترسی به اپل اسکریپتها را از دروت منوبارِ کامپیوتر mac os X فراهم میکند بدون اینکه مهم باشد که چه برنامههایی در حال اجرا هستند. انتخاب یک اسکریپت از منوبار، آن را آغاز میکند. در سیستم عامل 10.6.x , منوی اسکریپت از قسمت prefrences ویرایشگرِ اپل اسکریپت فعال میشود. در ورژنهای قبلی مک اواس x این از داخل AppleScript Utility application فعال میشد. وقتی اولین بار فعال میشود، منوی اسکریپت یک کتابخانهٔ پیشفرض نسبتاً عام و اپل اسکریپتهای کارکردی که از ویرایشگر اسکریپت هم قابل بازشدن اند و مثالهایی برای درک بهتر اپل اسکریپت اند را، نمایش میدهد. اسکریپتها میتوانند سازمان دهی شوند بهطوریکه فقط وقتی در منو ظاهر شوند که یک برنامهٔ مشخص در پس زمینه فعال است.
بسیاری از برنامههای اپل، برخی برنامههای third-party و برخی add-oneها منوی اسکریپت خاص خود را فراهم میکنند. اینها از چندین راه قابل فعال شدن اند اما تمتمی توابع اولیهٔ آنها از یک جنس است.
Hotkey Launchers
میانبر(shortcut)های صفحه کلید با استفاده از System Preferences "Keyboard & Mouse Settings" (تنظیمات ماوس و صفحه کلید) قابل نسبت داده شدن به اپل اسکریپتها هستند. برنامههای سودمند third-party گوناگونی هم در دسترس اند مانند QuicKeys, Spark, Quicksilver, Alfred, TextExpander که میتوانند اپل اسکریپتها را با ترکیب یک سری کلیدِ صفحه کلید، اجرا کنند.
Folder Actions (عملیات پوشه)
با استفاده از Folder Actions برای اپل اسکریپت، اسکریپتها میتوانند زمانی آغاز شوند که تغییر خاصی در پوشهها رخ دهد (مثل اضافه یا حذف فایلها).Folder Actionها با کلیک بر روی پوشه و انتخاب Folder Actions Setup... از منوی محتوا (contextual menu) میتوانند معین شوند. مکان این دستورها از ورژن 10.6.x به بعد از ورژنهای قبلی اش تفاوت کردهاست. این کار با برنامههای سودمندِ third-party مانند Hazel هم صورت میگیرد.
Unix command line and launchd
اپل اسکریپتها میتوانند از Unix command line یا از launchd برای کارهای زمانبندی شده با استفاده از ابزار osascriptاجرا شوند. ابزار osascript میتواند اسکریپتهای کامپایل شده (.scpt files) و فایلهای متنی ساده (.applescript files- اینها با یک ابزار در زمان کامپایل اجرا میشوند) را اجرا کند. برنامههای اسکریپتی میتوانند با استفاده از Unix open command، اجرا شوند.
مسائل مرتبط با اسکریپتها
[Automator Automator]
Automator یک محیط ویرایش گرافیکی و ماژولی است که در آن workflow ها از actionها ساخته میشوند. قصد این است که بدون نیاز به دانش برنامه نویسی، بسیاری از توابع اپل اسکریپت را تکرار کنیم. Automator عملی مخصوص به شامل شدن و اجرا ی اپل اسکریپتها را برای عملهای بسیار پیچیده داخا چارچوب ساده شدهٔ Automator, دارد .
هستهٔ سیستم برنامههای اسکریپت شدنی
این برنامهها که فقط در پس زمینه اجرا میشوند و داخل mac os x اند، برای دسترسی دادن اپل اسکریپت به ویژگیهایی که به صورت معمول اسکریپت شدنی نیستند. مثلاً در ۱۰٫۶٫۳ برنامههایی اسکریپت شدنی مثل VoiceOver(یک اسکریپت شدنیِ حسابداری و بستهٔ خط برِیل برای نابینایان) , System Events (کنترل برنامههای اسکریپت نشدنی و دسترسی به کارکردهای معینی از سیستم و عملیات اولیهٔ فایلها) , Printer Setup Utility (یک ویژگی سودمند اسکریپت شدنی برای کنترل کارهای چاپی) , Image Events(تغییر هستهٔ عکسها) , HelpViewer (ویژگی اسکریپت شدن برای نشان دادن قسمت کمکها) ,Database Events (واسط کاربری پایگاه دادهٔ minimal SQLite3) و AppleScript Utility ,.
AppleScriptObjC
قسمتی از بستهٔ Xcode , محیط برنامهنویسی «کوکو»، که روی mac Os x قابل نصب است، است. AppleScriptObjC میگذارد تا اپل اسکریپت به دستورهای «کوکو» دسترسی مستقیم داشته باشد.
AppleScript Studio
قسمتی از بستهٔ Xcode در ۱۰٫۴ و ۱۰٫۵ که الآن دیگر محبوب نیست. یک چارچوب برنامهنویسی برای چسباندن واسطهای «کوکو» به برنامههای اپل اسکریپت.
اضافه بر اسکریپت کردن (OSAX)
Scripting addition یک سری plug-in برای اپل اسکریپت هستند توسط third - partyها یا شرکت اپل توسعه داده شدهاند. آنها برای گسترش دستورهای خود اپل اسکریپت و گسترش ویژگیهای آن برای کم کردن وابستگی آن به کارکرد برنامههای دیگر، طراحی شدهاند. برای مثال Standard Addition.osax توسط شرکت اپل قابلیتهایی را به اپل اسکریپت افزوده است که داخل هستهٔ اصلی زبان نیست. بدون OSAX اپل اسکریپت توانایی نمایش دیالوگها یا سرویسهای مسیریابی و اجرای یک برنامه، تولید شده بهطور غیرمستقیم از برنامهای دیگر را نداشت.
نکات اساسی زبان
کلاسها (نوع دادهها)
اپل اسکریپت تعدادی کلاس تعریف شده (یا همان data type)در خودش دارد؛ و قطعاً یک برنامه هم میتواند که انواع دادهٔ نیازش را اضافه کند. data classهای ابتدایی بهطور همگانی اینطور هستند:
فایل سیستمها
alias (نام مستعار) - یک مراجعه به شئ سیستم فایل (فایل یا پوشه). نام مستعار ارتباطش را با شئ حتی اگر آن شئ حذف یا تغییر اسم داده شود، حفظ خواهد کرد.
file - مراجعهای به شئ فایل سیستم (پوشه یا فایل). این یک مراجعهٔ ایستا است و میتواند به یک شئ که در حال، وجود ندارد هم اشاره کند.
POSIX file- یک مراجعه به شئ فایل سیستم (فایل یا پوشه) داخل یک متن خالی با استفاده از نماد گذاریهای unix.
اشیائ ابتدایی
application - یک شئ برنامه که بیشتر برای عبارات دستوری استفادا میشود. (tell application "Finder" ...)
script - یک شئ اسکریپت. اشیائ اسکریپت نگهدارندهٔ اسکریپتها هستند. هر اپل اسکریپت یک شئ اسکریپت را هنگام اجرا میسازد. اشیائ اسکریپت میتوانند به کمک اپل اسکریپتها ساخته شوند.
class - یک شبه شئ که نوع بقیهٔ اشیاء را معین میکند.
reference- یک اشاره گر پایا و غیرمستقیم به یک شئ. اشاره گر به متغیر x همواره مقداری حال حاضر آن را برمیگرداند.
Standard data objects
boolean - مقدار درست/غلط
constant - خود زبان یک سری عدد ثابت مثل عدد پی را دارد اما میتوان ثابتهای دلخواه تعریف کرد.
number- یک کلاس که برای Int و real به صورت خیلی کم استفاده میشود و غیر علنی وقتی که عدد صحیح یا حقیقی را به متغیری نسبت میدهید صدا میشود.
اعداد صحیح
اعداد حقیقی
date - یک تاریخ در فرمت اپل اسکریپت.
text- از ورژن ۱۰٫۵ به بعد همان معنای کلاسهای string و Unicode text را میدهد.
اشیائ container
list - لیستی مرتب شده از اشیاء. هر کلاسی که در برنامهها یا لیستهای دیگر تعریف شده اسن را شامل میشود.
record
متفرقه
RGB color - برای کار با کلاسها و اشیایی که با رنگها سر و کار دارند.
unit types
ساختارهای زبان
بسیاری از فرایندهای اپل اسکریپت داخل بلوکهای کد مدیریت میشوند. یک بلوک با دستور command آغاز و با end command تمام میشود. مهمترین ساختارها در پایین تعریف شدهاند:
شرطیها
اپل اسکریپتها دو نوع عبارات شرطی دارند.
-- Simple conditionalifx<1000thensetxtox+1-- Compound conditionalifxis greater than3then-- commandselse-- other commandsendif
حلقهها
حلقهٔ تکرار در اپل اسکریپت چندین روش دارد. همگی شان بلوک بینrepeat و end repeat را چند بار تکرار میکنند. حلقهها میتوانند به صورت نابهنگام با دستور exit repeat متوقف شوند.
تکرار تا ابد.
repeat-- commands to be repeatedendrepeat
تکرار به اندازهٔ تعداد دفعات داده شده.
repeat10times-- commands to be repeatedendrepeat
حلقههای شرطی. بلوک داخل حلقه ی repeat whileتا وقتی که شرط برقرار است اجرا میشود. بعد از هر اجرای بلوک، شرط چک میشود. حلقهٔ repeat until , برعکس، یگانه است. اما بلوک تا وقتی که شرط غلط است انجام میشود.
حلقه با یک متغیر. هنگام شروع حلقه، متغیر به مقدار شروع نسبت داده میشود. بعد از هربار اجرای بلوک، یک متغیر اختیاری به متغیر، اضافه میشود که بهطور پیشفرض ۱ است.
-- repeat the block 2000 times, i gets all values from 1 to 2000repeatwithifrom1to2000-- commands to be repeatedendrepeat-- repeat the block 4 times, i gets values 100, 75, 50 and 25repeatwithifrom100to25by-25-- commands to be repeatedendrepeat
شمردن یک لیست. در هربار اجرای متغیرِ حلقه به یک نمونهٔ جدید داخل لیست داده میشود
یک تغییر مهم در این ساختار بلوکی، در فرم بلوکهای on - end ... است که برای تعریف handlerها (توابعی چون subrutineها) استفاده میشود. handlerهایی که با on functionName() شروع و با end functionName تمام میشوند، قسمتی از جریان معموا اسکریپت ما نیستند مگر اینکه از جایی داخل اسکریپت صدا زده شوند.
onaddingfolderitemstothisFolderafterreceivingtheseItems-- commands to apply to the folder or itemsendaddingfolderitemsto
onrun-- commandsendrun
handlerها همچنین میتوانند با "to" به جای on تعریف شوند و میتوانند برای قبول پارامترهای برچسبگذاری شده، نه داخل پرانتزها، استفاده شوند.
Handler with Labeled Parameters
Handler Using "to" and Labeled Parameters
onrockaroundtheclockdisplay dialog(clockas string)endrock-- called with:rockaroundthecurrent date
tocheckforyourNumberfrombottomthrutopifbottom≤yourNumberandyourNumber≤topthendisplay dialog"Congratulations! You scored."endifendcheck--called with:checkfor8from7thru10
چهار نوع handler از پیش تعریف شده داخل اپل اسکریپت داریم: run, open, idle, quit. که هرکدام از آنها مانند روش ساخت run handler در بالا ساخته میشوند.
Run handler
اصلیترین کد اسکریپت که مقع اجرا صدا میشود را تعریف میکند. بلوکهای Run handler اختیاری اند مگر اینکه آرگومانهایی به اسکریپت پاس داده شوند. اگر یک Run handler به صورت علنی حذف شود، آنگاه همهٔ کدی که داخل بلوک handler نیست مثل موقعی اجرا میشود که انگار یک run handler ِ غیر علنی وجود داشتهاست.
وقتی که یک اسکریپت شامل open handler به منظور یک applet ذخیره میشود، applet به یک droplet تبدیل میشود.droplet میتواند داخل finder با شکل آیکون اش که فلشی است که نشان دهندهٔ این است که چندین مورو میتوانند داخل یک آیکون بیفتند، شناخته شود. open handler برای droplet وقتب اجرا میشود که فایلها و پوشهها داخل آیکون droplet بیفتند. اشاره گرها به موارد افتاده شده در آیکونِ droplet به عنوان پارامتر open handler به اسکریپت droplet پاس داده میشوند. یک droplet میتواند مثل روش یک applet معمولی که run handler اش اجرا میشود، آغاز شود.
Idle handler
یک زیر روال است که وقتیکه برنامه در حالت درجا است، در بازههای زمانی توسط سیستم اجرا میشود.
on idle--code to execute when the script's execution has completedreturn60-- number of seconds to pause before executing idle handler againend idle
یک idle handler میتواند در dropletها یا appletها به صورت appletهای stay-open (باز -مان) ذخیره شود و برای اسکریپتهایی که منتظر یک داده یا اتفاق هستند، مفید است. طول زمان درجا بودن برنامه، به صورت پیشفرض ۳۰ ثانیه است اما میتواند با برگرداندن مقداری دیگر در انتهای زیرروال، تغییر کند.
Quit handler
یک دستگیره است که هنگامیکه applet درخواست خروج را دریافت میکند، اجرا میشود. این میتواند برای ذخیره دادهها یا اتمام یک عمل قبل از خروج از برنامه، استفاده شود.
onquit--commands to execute before the script quitscontinuequit-- required for the script to actually quitendquit
اشیائ اسکریپت
اشیای اسکریپت میتوانند با نحو زیر به صورت علنی تعریف شوند:
scriptscriptName-- commands and handlers specific to the scriptendscript
اشیای اسکریپت میتوانند همان دستورهای tell را مانند اشیای برنامه استفاده کنند و میتوانند از داخل فایلها بارگذاری با به درون آنها ذخیره شوند. طول زمان اجرا در بعضی موارد با استفاده از اشیای اکریپت کاهش پیدا میکند.
اطلاعات متفرقه
متغیرها مستقیماً نوع داده نمیشوند و نیازی به declare شدن ندارند. متغیرها هر نوع دادهای را میتوانند بگیرند (حتی توابع و اسکریپتها). دستورهای زیر نمونههایی از ساختن متغیرها هستند:
setvariable1to1-- create an integer variable called variable1setvariable2to"Hello"-- create a text variable called variable2copy{17,"doubleday"}tovariable3-- create a list variable called variable3set{variable4,variable5}tovariable3-- copy the list items of variable3 into separate variables variable4 and variable5setvariable6toscriptmyScript-- set a variable to an instance of a script
اشیای اسکریپت تماماً شئ هستند. آنها میتوانند متدهای کلاسهایشان را پیاده کنند و داده و توابع را از یک پدر به ارث ببرند.
زیرروالها مستقیماً از بلوکهای tell برنامه نمیتوانند صدا زده شوند. برای اینکار باید 'my' و 'of me' را به کار ببرید.
یک جنبهٔ مهم پیادهسازی اپل اسکریپت Open Scripting Architecture (OSA) است. اپل OSA را برای محصولات third-party یِ اسکریپتی/اتوماسیونی مانند QuicKeys و UserLand , برای کارکرد در شرایط یکسان با اپل اسکریپت، فراهم کردهاست. اپل اسکریپت به عنوان یک بخش اسکریپتی پیادهسازی شد و خصوصیات پایهٔ آن برای وساطت با چنین بخشی، برای OSA عمومی بود و به بقیهٔ توسعه دهندگان اجازه میداد تا بخشهای اسکریپتی خود را به سیستم اضافه کنند. APIهای عمومی برای لود کردن، ذخیره و کامپایل متون برای همهٔ چنین بخشهایی یکسان کار میکرد که یعنی appletها و dropletها میتوانستند برای هر زبان اسکریپتی برقرار باشند.
, همگی ابزار کار با appleEventها بدون بخشهای OSA را پشتیبانی میکنند.
یکی از جالبترین ویژگیهای OSA قابلیت "scripting additions" یا OSAX for Open Scripting Architecture eXtension که بر پایهٔ دستورهای خارجی هایپرکارد است، است. Scripting Additionها کتابخانههایی هستند که به برنامهنویس اجازهٔ گسترده کردن توایع اپل اسکریپت را میدهند. دستورهایی اینچنین مستقل از برنامهاند و گسترده روی سیستم هستند. او ای ایکس مک یک سری از این additionها را به نام Standard Additions دارد که کارکرد اپل اسکریپت را با تعدادی دستور جدید چون دیالوگهای تعاملی با کاربر، خواندن و نوشتن فایلها، دستورهای فایل سیستمها، توابع تاریخ، متن و اعمال ریاضی، گسترده میسازند.
منابع
جستارهای وابسته
Mark Conway Munro, "AppleScript (Developer Reference)", Wiley (2010); ISBN 978-0-470-56229-1
Hanaan Rosenthal & Hamish Sanderson, Learn AppleScript: The Comprehensive Guide to Scripting and Automation on Mac OS X, Third Edition, Apress (2010); ISBN 978-1-4302-2361-0
Sal Soghoian & Bill Cheeseman, Apple Training Series: AppleScript 1-2-3, Peachpit Press (2009); ISBN 0-321-14931-9
Jerry Lee Ford Jr. , AppleScript Programming for the Absolute Beginner, Course Technology (2007); ISBN 978-1-59863-384-9