اپل اسکریپت

اپل اسکریپت یک زبان اسکریپت نویسی است که توسط شرکت اپل ساخته شده‌است و در مک اواس از زمان 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 a
multiple
line
comment *)
Hello, world!
در اپل اسکریپت، برنامه "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" 
default answer "Text Answer" 
hidden answer false 
buttons {"Skip", "Okay", "Cancel" 
default button "Okay" 
cancel button "Skip" 
with title "Dialog Window Title" 
with icon note 
giving up after 15
-- Choose from list
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
-- Alert
set resultAlertReply to display alert "Alert Text" 
as warning 
buttons {"Skip", "Okay", "Cancel" 
default button 2 
cancel button 1 
giving up after 2
هر متد تعاملی با کاربر می‌تواند مقادیری را چون فشردن دکمه، انتخاب یک مورد یا وارد کرون متن برای فرایندهای آینده را برگرداند. مثلا:
display alert "Hello, world!" buttons {"Rudely decline", "Happily accept"
set theAnswer to button returned of the result
if theAnswer is "Happily accept" then
beep 5
else
say "Piffle!"
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"
quit
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"
tell document 1
tell page 2
tell text box 1
set word 5 to "Apple"
end tell
end tell
end tell
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"
-- 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 havent selected a function. The operation has cancelled."
end if
end tell
یک دیالوگ باکس ساده نام کاربری و رمز عبور. اینجا نام کاربری john و رمز عبور app123 است:
tell application "Finder"
set passAns to "app123"
set userAns to "John"
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) 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
ابزار توسعه
Script editors
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 conditional
if x
0
set x to x - 1
end repeat
set x to 5
repeat until x ≤ 0
set x to x - 1
end repeat
حلقه با یک متغیر. هنگام شروع حلقه، متغیر به مقدار شروع نسبت داده می‌شود. بعد از هربار اجرای بلوک، یک متغیر اختیاری به متغیر، اضافه می‌شود که به‌طور پیشفرض ۱ است.
-- repeat the block 2000 times, i gets all values from 1 to 2000
repeat with i from 1 to 2000
-- commands to be repeated
end repeat
-- repeat the block 4 times, i gets values 100, 75, 50 and 25
repeat with i from 100 to 25 by -25
-- commands to be repeated
end repeat
شمردن یک لیست. در هربار اجرای متغیر حلقه به یک نمونه جدید داخل لیست داده می‌شود set total to 0
repeat with x in {1, 2, 3, 4, 5
set total to total + x
end repeat
یک تغییر مهم در این ساختار بلوکی، در فرم بلوک‌های on - end … است که برای تعریف handlerها (توابعی چون subrutineها) استفاده می‌شود. handlerهایی که با on functionName() شروع و با end functionName تمام می‌شوند، قسمتی از جریان معموا اسکریپت ما نیستند مگر اینکه از جایی داخل اسکریپت صدا زده شوند.
Function handler
Folder actions block
Run handler
on myFunction(parameters…)
-- subroutine commands
end myFunction
on adding folder items to thisFolder after receiving theseItems
-- commands to apply to the folder or items
end adding folder items to
on run
-- commands
end run
handlerها همچنین می‌توانند با "to" به جای on تعریف شوند و می‌توانند برای قبول پارامترهای برچسب‌گذاری شده، نه داخل پرانتزها، استفاده شوند.
Handler with Labeled Parameters
Handler Using "to" and Labeled Parameters
on rock around the clock
display dialog (clock as string)
end rock
-- called with:
rock around the current date
to check for yourNumber from bottom thru top
if bottom ≤ yourNumber and yourNumber ≤ top then
display dialog "Congratulations! You scored."
end if
end check
--called with:
check for 8 from 7 thru 10
چهار نوع handler از پیش تعریف شده داخل اپل اسکریپت داریم: run, open, idle, quit. که هرکدام از آن‌ها مانند روش ساخت run handler در بالا ساخته می‌شوند.
Run handler اصلی‌ترین کد اسکریپت که مقع اجرا صدا می‌شود را تعریف می‌کند. بلوک‌های Run handler اختیاری‌اند مگر اینکه آرگومانهایی به اسکریپت پاس داده شوند. اگر یک Run handler به صورت علنی حذف شود، آنگاه همه کدی که داخل بلوک handler نیست مثل موقعی اجرا می‌شود که انگار یک run handler  غیر علنی وجود داشته‌است. Open handler
تعریف با استفاده از "on open theItems". on open theItems
repeat with thisItem in theItems
tell application "Finder" to update thisItem
end repeat
end open وقتی که یک اسکریپت شامل 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 scripts execution has completed
return 60 -- number of seconds to pause before executing idle handler again
end idle یک idle handler می‌تواند در dropletها یا appletها به صورت appletهای stay-open (باز -مان) ذخیره شود و برای اسکریپت‌هایی که منتظر یک داده یا اتفاق هستند، مفید است. طول زمان درجا بودن برنامه، به صورت پیشفرض ۳۰ ثانیه است اما می‌تواند با برگرداندن مقداری دیگر در انتهای زیرروال، تغییر کند.
Quit handler یک دستگیره است که هنگامیکه applet درخواست خروج را دریافت می‌کند، اجرا می‌شود. این می‌تواند برای ذخیره داده‌ها یا اتمام یک عمل قبل از خروج از برنامه، استفاده شود. on quit
--commands to execute before the script quits
continue quit -- required for the script to actually quit
end quit
اشیای اسکریپت
اشیای اسکریپت می‌توانند با نحو زیر به صورت علنی تعریف شوند: script scriptName
-- commands and handlers specific to the script
end script اشیای اسکریپت می‌توانند همان دستورهای tell را مانند اشیای برنامه استفاده کنند و می‌توانند از داخل فایل‌ها بارگذاری با به درون آن‌ها ذخیره شوند. طول زمان اجرا در بعضی موارد با استفاده از اشیای اکریپت کاهش پیدا می‌کند.
اطلاعات متفرقه
متغیرها مستقیما نوع داده نمی‌شوند و نیازی به declare شدن ندارند. متغیرها هر نوع داده‌ای را می‌توانند بگیرند (حتی توابع و اسکریپت‌ها). دستورهای زیر نمونه‌هایی از ساختن متغیرها هستند: set variable1 to 1 -- create an integer variable called variable1
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
اشیای اسکریپت تماما شی هستند. آن‌ها می‌توانند متدهای کلاسهایشان را پیاده کنند و داده و توابع را از یک پدر به ارث ببرند.
زیرروال‌ها مستقیما از بلوک‌های tell برنامه نمی‌توانند صدا زده شوند. برای اینکار باید my و of me را به کار ببرید. tell application "Finder"
set x to my myHandler()
-- or
set x to myHandler() of me
end tell
on myHandler()
--commands
end myHandler با استفاده از همین تکنیک برای دستورهای اضافی اسکریپت کردن می‌تواند خطاها را کم و کارایی را بهتر کند.
tell application "Finder"
set anyNumber to my (random number from 5 to 50)
end tell
معماریOpen Scripting
یک جنبه مهم پیاده‌سازی اپل اسکریپت Open Scripting Architecture (OSA) است. اپل OSA را برای محصولات third-party ی اسکریپتی/اتوماسیونی مانند QuicKeys و UserLand , برای کارکرد در شرایط یکسان با اپل اسکریپت، فراهم کرده‌است. اپل اسکریپت به عنوان یک بخش اسکریپتی پیاده‌سازی شد و خصوصیات پایه آن برای وساطت با چنین بخشی، برای OSA عمومی بود و به بقیه توسعه دهندگان اجازه می‌داد تا بخش‌های اسکریپتی خود را به سیستم اضافه کنند. APIهای عمومی برای لود کردن، ذخیره و کامپایل متون برای همه چنین بخش‌هایی یکسان کار می‌کرد که یعنی appletها و dropletها می‌توانستند برای هر زبان اسکریپتی برقرار باشند.
با سیستم عامل ما اوای ایکس، بخش JavaScript OSA , تنها زبان جدی OSA برای کار با اپل اسکریپت است در حالی که ورژن پرل مکینتاش، پایتون (زبان برنامه‌نویسی) , روبی (زبان برنامه‌نویسی) و تی‌سی‌ال , همگی ابزار کار با appleEventها بدون بخش‌های OSA را پشتیبانی می‌کنند.
یکی از جالب‌ترین ویژگی‌های OSA قابلیت "scripting additions" یا OSAX for Open Scripting Architecture eXtension که بر پایه دستورهای خارجی هایپرکارد است، است. Scripting Additionها کتابخانه‌هایی هستند که به برنامه‌نویس اجازه گسترده کردن توایع اپل اسکریپت را می‌دهند. دستورهایی اینچنین مستقل از برنامه‌اند و گسترده روی سیستم هستند. او ای ایکس مک یک سری از این additionها را به نام Standard Additions دارد که کارکرد اپل اسکریپت رابا تعدادی دستور جدید چون دیالوگ‌های تعاملی با کاربر، خواندن و نوشتن فایل‌ها، دستورهای فایل سیستم‌ها، توابع تاریخ، متن و اعمال ریاضی، گسترده می‌سازند.