اپل اسکریپت
اپل اسکریپت یک زبان اسکریپت نویسی است که توسط شرکت اپل ساخته شده‌است و در مک اواس از زمان 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ها می‌گذارند تا یک متن بتواند با چند برنامه هم‌زمان کار کند و داده‌ها بین آن‌ها رفت‌وآمد کنند تا عملیات پیچیده بدون دخالت انسان انجام شوند. برای مثال، یک اپل اسکریپت برای ساختن یک گالریِ وبِ ساده باید کارهای زیر را انجام دهد: برای کاربر، صدها یا هزاران قدم در چندین برنامه به تنها عمل اجرا کردن یک متن کاهش یافته‌است و عملیات در زمان بسیار کمتری بدون هیچگونه خطای انسانی صورت می‌گیرد. یک متن بزرگ و پیچیده فقط یکبار اجرا می‌شود درحالیکه متن‌های دیگر بارها استفاده می‌شوند.
بخش‌های اپل اسکریپتِ یک برنامه داخل لغتنامهٔ اسکریپتی آن برنامه قابل رویتهستند که داخل هرگونه ویرایشگر متنی قابل دیدن‌اند. این بخش‌ها به‌طور کلی در گروه‌هایی بنا به نزدیکی کارکردشان قرار دارند. دو نوع پایه‌ای بخش‌ها وجود دارند: «کلاسها» و «دستورها». کلاسها، اشیایی قابل متن شدن هیتند. برای مثال، یک برنامهٔ ویرایش متن یکسری کلاسهایی برای پنجره‌ها، سندها و متن‌ها دارد و این کلاس‌ها یک سری ویژگی‌ها دارند(property) که قابل تغییرند (سایز پنجره، پس زمینهٔ سند، سایز خطوط متن و ...) یا ممکن است کلاسهایی دیگر را هم شامل شوند (یک پنجره یک یا چند سند دارد، یک سند متن دارد، یک شی متن پاراگراف‌ها و کلمات و کاراکترهایی دارد). به‌طور متضاد، «دستورها»، دستورهایی هستند که می‌تواند به اشیای متن شدنی داده شوند. فرم کلی یک بلوک اپل اسکریپت این‌گونه است که به یک شی متن شدنی "گفته می‌شود " که یک دستور را اجرا کند.
همهٔ برنامه‌های متن شدنی در یک سری دستورهای ابتدایی و اشیاء مشترکند(standard suite). دستورهایی برای بازکردن، بستن یا ذخیره یک فایل، برای چاپ کردن چیزی، برای خروج، برای اختصاص داده‌ها به متغیرها. مانند یک شی برنامهٔ ابتدایی که خصوصیات متن شدنی یک برنامه را می‌دهد. بسیاری از برنامه‌ها تعدادی زیادی از توابعی با کارکردهای تقریباً مشابه را دارند که با اجرای هر عملی که خود برنامه می‌تواند انجام دهد همخوانی دارند. در موارد استثنایی، برنامه‌ها ممکن است یک سری plugin که داخل لغتنامهٔ اسکریپتی خودشان است را پشتیبانی کنند.
اپل اسکریپت با توانایی در ساخت یک متن به وسیله درک مستقیم و ضبط حرکات کاربر، طراحی شد. هنگمی که ویرایشگر اپل اسکریپت باز است و دکمهٔ رکورد زده شده‌است، هر عملِ کاربر روی کامپیوتر در هر برنامه‌ای که AppleEvents و ضبط اپل اسکریپت را پشتیبانی می‌کند، به دستورهای مربوطه آن‌ها داخل اپل اسکریپت تبدیل شده و روی پنجرهٔ ویرایش متن قرار می‌گیرد. متن نهایی می‌تواند ذخیره یا دوباره اجرا شود تا اعمال اصلی تکرار شوند یا تغییر داده شوند تا به‌طور کلی قابل استفاده باشند.
کامنت‌ها میوانند از چندین راه درج شوند. اگر می‌خواهید یک کامنت کوچک یک خطه درج کنید، دو عدد (-) یا یک (#) بگذارید. مثل: --This is a one line comment اگر می‌خواهید کامنتی بگذارید که بیش از یک خط را می‌گیرد، به این‌گونه با پرانتز و * عمل کنید: (* This is a multiple line comment *) در اپل اسکریپت، برنامهٔ "hello,world!" سنتی ما به صورت‌های زیادی قابل نوشتن است: display dialog "Hello, world!" -- a modal window with “OK” and “Cancel” buttons -- or display alert "Hello, world!" -- a modal window with a single “OK” button and an icon representing the app displaying the alert -- or say "Hello, world!" -- an audio message using a synthesized computer voice اپل اسکریپت چندین گزینه برای واسط کاربر(user interface) شامل دیالوگها، زنگ‌های هشدار و لیستی از انتخابات دارد. (کاراکتر ¬ , با نگه داشتن کلید option و کلید return در ویرایشگر متن، نشانگر ادامه دار بودن یک عبارت داخل چند خط است) -- Dialog set dialogReply to display dialog "Dialog Text" ¬
-- Choose from list set chosenListItem to choose from list {"A", "B", "3"} ¬
-- Alert set resultAlertReply to display alert "Alert Text" ¬ هر متد تعاملی با کاربر می‌تواند مقادیری را چون فشردن دکمه، انتخاب یک مورد یا وارد کرون متن برای فرایندهای آینده را برگرداند. مثلاً: set theAnswer to button returned of the result if theAnswer is "Happily accept" then else end if از آنجاییکه AppleEventها راهی برای فرستادن پیام به برنامه‌ها هستند، اپل اسکریپت یک زبان به خصوص برای فرستادن AppleEventها است. برای پیروی از سنت سیستم عامل مک در راحتی استفاده، زبان اپل اسکریپت بر اساس زبان طبیعی طراحی شده‌است. همان‌طور که واسط کاربر گرافیکی آن هم با desktop تشابه دارد. یک برنامهٔ خوب نوشته شدهٔ اپل اسکریپت باید به اندازهٔ کافی تمیز و خوانا و قابل درک برای عموم باشد و به راحتی قابل ویرایش باشد. عمدتاً این زبان بر پایهٔ زبان هایپرتاکِ هایپرکارد است که گسترش یافتهٔ آن نه تنها به دنیای کارت‌ها و پشته‌های هایپرکارد، بلکه به صورت نظری به هر سندی اشاره دارد. برای همین، تیم اپل اسکریپت AppleEvent Object Model که اشیایی را که هر برنامه‌ای «میشناسدشان» را معرفی کردند.
قلب زبان اپل اسکریپت استفادهٔ کلماتیست که چون اسامی و تفعال عمل می‌کنند و قابل ترکیب هستند. مثلاً به جای اینکه از فعلی دیگر برای عمل چاپ کردن یک صفعه یا یک سند یا چندین صفحه (printPage, printDocument, printRange) اپل اسکریپت تنها "print" را استفاده می‌کند که می‌تواند با object مانند یا صفحه، یک سند یا چندین صفحه ترکیب شود. print page 1
print document 2
print pages 1 thru 5 of document 2 به‌طور کلی AEOM تعریف یک سری شی است مانند "Document " یا " پاراگراف" یا عملیاتی چون "cut" و "close". این سیستم همچنین روش‌هایی برای اشاره به خصوصیات (Peoperty)های یک شی را دارد پس کاربر می‌تواند به "سومین پاراگراف سندی به نام روز خوب" یا " رنگ آخرین کلمهٔ جلوی پنجره" دسترسی داشته باشد.AEOM لغتنامهٔ یک برنامه برای پیوستن Apple Events به کلماتی خوانا برای انسان که اجازهٔ ترجمه از هر دو سو بین اپل ایوِنت‌های bytecode و یک اپل اسکریپت خوانا برای انسان می‌دهد را، استفاده می‌کند. برای شناخت بخش‌هایی از برنامه که متن شدنی اند باید لغتنامه‌هایی که آن برنامه‌ها پشتیبانی می‌کنند، ملاحظه شوند. (در Xcode و برنامه‌های Script Editor داخل File → Open Dictionary بروید)
برای تعیین کردن اینکه چه برنامه‌ای برای مقصد چنین پیامی مناسب است، اپل اسکریپت از ساختمان "tell" استفاده می‌کند: tell application "Microsoft Word" end tell به نوبت tell می‌تواند در یک خط با infinitive نشان داده شود: tell application "Microsoft Word" to quit برای اتفاقهای داخل"Core Suite" , مثل (activate, open, reopen, close, print, and quit) , برنامه ممکن است چون اشیای مستقیم با دستورهای انتقالی مواجه شود: quit application "Microsoft Word" مفهوم شئ سلسله مراتبی میهواند داخل بلوک‌های تو در تو مطرح شود:
tell application "QuarkXPress" end tell اشیائ سلسله مراتبی را اینطور هم می‌توان نشان داد به وسیلهٔ عبارات prepositional: pixel 7 of row 3 of TIFF image "my bitmap" که در یک زبان برنامه‌نویسی دیگر ممکن است به صورت صدا زدن پشت هم متدها مانند سودوکد زیر باشد: getTIFF("my bitmap").getRow(3).getPixel(7); اپل اسکریپت شامل نحوی برای شمارش ترتیبی مثل "اولین پاراگراف" و همین‌طور نحوی برای شمارش کاردینال چون " پاراگراف یک" است. همین‌طور اعداد هم می‌توانند متن یا رقم به حساب بیایند ."five " , "fifth" و "۵" همگی پشتیبانی می‌شوند و معادل دارند. همین‌طور کلمهٔ "the " می‌تواند هرجای متن برای بهبود خوانایی استفاده شود و هیچ اثری بر عملکرد ندارد.
یک نمونه ماشین حساب ایمن در برابر خطا: tell application "Finder"
end tell یک دیالوگ باکس سادهٔ نام کاربری و رمز عبور. اینجا نام کاربری john و رمز عبور app123 است: tell application "Finder" end tell Script editorsها یک محیط برنامه‌نویسی یکپارچه را برای اپی اسکریپت‌ها فراهم می‌کنند و شامل ابزاری برای نوشتن، چک کردن صحّت، کامپایل، اجرا و debug اسکریپت‌ها دارند. آن‌ها همین‌طور مکانیسمی برای بازکردن و دیدن لغتنامه‌های اپل اسکریپت از برنامه‌های اسکریپت شدنی و ذخیرهٔ اسکریپت‌ها در تعدادی فرمت (compiled script files, application packages, script bundles, and plain text files) دارندو معمولاً قابلیت‌هایی چون syntax highlighting و تکه کدهای از قبل ننوشته شده را دارند. AppleScript Editor(ویرایشگر اسکریپت در سیستم عامل x مک قبل از ۱۰٫۶ و yosemite)
Xcode, از شرکت اپل
Smile و smileLab , موجود از طریق (Satimage)
[Script Debugger Script Debugger] از کمپانی [ Late Night Software Late Night Software]
FacePan , از شرکت Late Night Software
اپل اسکریپت‌ها می‌توانند از درون یک ویرایشگر اسکریپت اجرا شوند ولی معمولاً اجرا کردن آن‌ها به‌طور مستقیم، بدون بازکردن یک ویرایشگر اسکریپت مناسبتر است. تعدادی از انتخاب‌ها برای این گونه عمل کردن: Script Menu بسیاری از برنامه‌های اپل، برخی برنامه‌های third-party و برخی add-oneها منوی اسکریپت خاص خود را فراهم می‌کنند. این‌ها از چندین راه قابل فعال شدن اند اما تمتمی توابع اولیهٔ آن‌ها از یک جنس است. Hotkey Launchers
Folder Actions (عملیات پوشه)
Unix command line and launchd
[Automator Automator]
هستهٔ سیستم برنامه‌های اسکریپت شدنی
AppleScriptObjC
AppleScript Studio
اضافه بر اسکریپت کردن (OSAX)
اپل اسکریپت تعدادی کلاس تعریف شده (یا همان data type)در خودش دارد؛ و قطعاً یک برنامه هم می‌تواند که انواع دادهٔ نیازش را اضافه کند. data classهای ابتدایی به‌طور همگانی اینطور هستند:
بسیاری از فرایندهای اپل اسکریپت داخل بلوک‌های کد مدیریت می‌شوند. یک بلوک با دستور "command" آغاز و با "end command" تمام می‌شود. مهم‌ترین ساختارها در پایین تعریف شده‌اند: شرطی‌ها اپل اسکریپت‌ها دو نوع عبارات شرطی دارند.-- Simple conditional if x <1000 then set x to x + 1
-- Compound conditional if x is greater than 3 then else end if حلقه‌ها حلقهٔ تکرار در اپل اسکریپت چندین روش دارد. همگی شان بلوک بینrepeat و end repeat را چند بار تکرار می‌کنند. حلقه‌ها می‌توانند به صورت نابهنگام با دستور exit repeat متوقف شوند.
تکرار تا ابد.repeat end repeatتکرار به اندازهٔ تعداد دفعات داده شده.repeat 10 times end repeatحلقه‌های شرطی. بلوک داخل حلقه ی repeat whileتا وقتی که شرط برقرار است اجرا می‌شود. بعد از هر اجرای بلوک، شرط چک می‌شود. حلقهٔ repeat until , برعکس، یگانه است. اما بلوک تا وقتی که شرط غلط است انجام می‌شود.set x to 5 repeat while x> 0 end repeat
set x to 5 repeat until x ≤ 0 end repeat حلقه با یک متغیر. هنگام شروع حلقه، متغیر به مقدار شروع نسبت داده می‌شود. بعد از هربار اجرای بلوک، یک متغیر اختیاری به متغیر، اضافه می‌شود که به‌طور پیشفرض ۱ است. -- repeat the block 2000 times, i gets all values from 1 to 2000 repeat with i from 1 to 2000 end repeat
-- repeat the block 4 times, i gets values 100, 75, 50 and 25 repeat with i from 100 to 25 by -25 end repeat شمردن یک لیست. در هربار اجرای متغیرِ حلقه به یک نمونهٔ جدید داخل لیست داده می‌شودset total to 0 end repeat یک تغییر مهم در این ساختار بلوکی، در فرم بلوک‌های on - end ... است که برای تعریف handlerها (توابعی چون subrutineها) استفاده می‌شود. handlerهایی که با on functionName() شروع و با end functionName تمام می‌شوند، قسمتی از جریان معموا اسکریپت ما نیستند مگر اینکه از جایی داخل اسکریپت صدا زده شوند.
handlerها همچنین می‌توانند با "to" به جای on تعریف شوند و می‌توانند برای قبول پارامترهای برچسب‌گذاری شده، نه داخل پرانتزها، استفاده شوند.
چهار نوع handler از پیش تعریف شده داخل اپل اسکریپت داریم: run, open, idle, quit. که هرکدام از آن‌ها مانند روش ساخت run handler در بالا ساخته می‌شوند. Run handleron open theItems end openوقتی که یک اسکریپت شامل open handler به منظور یک applet ذخیره می‌شود، applet به یک droplet تبدیل می‌شود.droplet می‌تواند داخل finder با شکل آیکون اش که فلشی است که نشان دهندهٔ این است که چندین مورو می‌توانند داخل یک آیکون بیفتند، شناخته شود. open handler برای droplet وقتب اجرا می‌شود که فایل‌ها و پوشه‌ها داخل آیکون droplet بیفتند. اشاره گرها به موارد افتاده شده در آیکونِ droplet به عنوان پارامتر open handler به اسکریپت droplet پاس داده می‌شوند. یک droplet می‌تواند مثل روش یک applet معمولی که run handler اش اجرا می‌شود، آغاز شود. Idle handleron idle end idleیک idle handler می‌تواند در dropletها یا appletها به صورت appletهای stay-open (باز -مان) ذخیره شود و برای اسکریپت‌هایی که منتظر یک داده یا اتفاق هستند، مفید است. طول زمان درجا بودن برنامه، به صورت پیشفرض ۳۰ ثانیه است اما می‌تواند با برگرداندن مقداری دیگر در انتهای زیرروال، تغییر کند. Quit handleron quit end quit اشیائ اسکریپت اشیای اسکریپت می‌توانند با نحو زیر به صورت علنی تعریف شوند:script scriptName end scriptاشیای اسکریپت می‌توانند همان دستورهای tell را مانند اشیای برنامه استفاده کنند و می‌توانند از داخل فایل‌ها بارگذاری با به درون آن‌ها ذخیره شوند. طول زمان اجرا در بعضی موارد با استفاده از اشیای اکریپت کاهش پیدا می‌کند.
set variable2 to "Hello" -- create a text variable called variable2 copy {17, "doubleday"} to variable3 -- create a list variable called variable3 set {variable4, variable5} to variable3 -- copy the list items of variable3 into separate variables variable4 and variable5 set variable6 to script myScript -- set a variable to an instance of a script  set x to my myHandler() end tell
on myHandler() end myHandlerبا استفاده از همین تکنیک برای دستورهای اضافی اسکریپت کردن می‌تواند خطاها را کم و کارایی را بهتر کند. tell application "Finder" end tell یک جنبهٔ مهم پیاده‌سازی اپل اسکریپت Open Scripting Architecture (OSA) است. اپل OSA را برای محصولات third-party یِ اسکریپتی/اتوماسیونی مانند QuicKeys و UserLand , برای کارکرد در شرایط یکسان با اپل اسکریپت، فراهم کرده‌است. اپل اسکریپت به عنوان یک بخش اسکریپتی پیاده‌سازی شد و خصوصیات پایهٔ آن برای وساطت با چنین بخشی، برای OSA عمومی بود و به بقیهٔ توسعه دهندگان اجازه می‌داد تا بخش‌های اسکریپتی خود را به سیستم اضافه کنند. APIهای عمومی برای لود کردن، ذخیره و کامپایل متون برای همهٔ چنین بخش‌هایی یکسان کار می‌کرد که یعنی appletها و dropletها می‌توانستند برای هر زبان اسکریپتی برقرار باشند.
با سیستم عامل ما اوای ایکس، بخش JavaScript OSA , تنها زبان جدی OSA برای کار با اپل اسکریپت است در حالی که ورژن پرلِ مکینتاش، پایتون (زبان برنامه‌نویسی) , روبی (زبان برنامه‌نویسی) و تی‌سی‌ال
یکی از جالب‌ترین ویژگی‌های OSA قابلیت "scripting additions" یا OSAX for Open Scripting Architecture eXtension که بر پایهٔ دستورهای خارجی هایپرکارد است، است. Scripting Additionها کتابخانه‌هایی هستند که به برنامه‌نویس اجازهٔ گسترده کردن توایع اپل اسکریپت را می‌دهند. دستورهایی اینچنین مستقل از برنامه‌اند و گسترده روی سیستم هستند. او ای ایکس مک یک سری از این additionها را به نام Standard Additions دارد که کارکرد اپل اسکریپت را با تعدادی دستور جدید چون دیالوگ‌های تعاملی با کاربر، خواندن و نوشتن فایل‌ها، دستورهای فایل سیستم‌ها، توابع تاریخ، متن و اعمال ریاضی، گسترده می‌سازند.