اپل اسکریپت
نکات اساسی زبان > ساختارهای زبان

بسیاری از فرایندهای اپل اسکریپت داخل بلوک‌های کد مدیریت می‌شوند. یک بلوک با دستور command آغاز و با end command تمام می‌شود. مهم‌ترین ساختارها در پایین تعریف شده‌اند:
شرطی‌ها
اپل اسکریپت‌ها دو نوع عبارات شرطی دارند.
-- Simple conditional
if x <1000 then set x to x + 1

-- Compound conditional
if x is greater than 3 then
     -- commands
else
     -- other commands
end if
حلقه‌ها
حلقهٔ تکرار در اپل اسکریپت چندین روش دارد. همگی شان بلوک بینrepeat و end repeat را چند بار تکرار می‌کنند. حلقه‌ها می‌توانند به صورت نابهنگام با دستور exit repeat متوقف شوند.
تکرار تا ابد.
repeat
     -- commands to be repeated
end repeat
تکرار به اندازهٔ تعداد دفعات داده شده.
repeat 10 times
     -- commands to be repeated
end repeat
حلقه‌های شرطی. بلوک داخل حلقه ی repeat whileتا وقتی که شرط برقرار است اجرا می‌شود. بعد از هر اجرای بلوک، شرط چک می‌شود. حلقهٔ repeat until , برعکس، یگانه است. اما بلوک تا وقتی که شرط غلط است انجام می‌شود.
set x to 5
repeat while 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 ِ غیر علنی وجود داشته‌است.
تعریف با استفاده از "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 script's 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 را مانند اشیای برنامه استفاده کنند و می‌توانند از داخل فایل‌ها بارگذاری با به درون آن‌ها ذخیره شوند. طول زمان اجرا در بعضی موارد با استفاده از اشیای اکریپت کاهش پیدا می‌کند.