AppleScript - AppleScript

AppleScript
paradigma Doğal dil programlama , Komut dosyası oluşturma
geliştirici Apple Inc.
İlk ortaya çıktı 1993 ; 28 yıl önce ( 1993 )
kararlı sürüm
2.5 / 16 Ekim 2014 ; 6 yıl önce ( 2014-10-16 )
Yazma disiplini Zayıf , dinamik
işletim sistemi Sistem 7 , Mac OS 8 , Mac OS 9 , macOS
Lisans Tescilli ( APSL kapsamında mevcut parçalar )
Dosya adı uzantıları .scpt, .scptd, .applescript
İnternet sitesi https://developer.apple.com/applescript
Tarafından etkilenmiş
Doğal dil , HyperTalk

AppleScript , Apple Inc. tarafından oluşturulan ve komut dosyası yazılabilir Mac uygulamaları üzerinde otomatik denetimi kolaylaştıran bir komut dosyası dilidir . İlk olarak Sistem 7'de tanıtıldı , şu anda bir sistem otomasyon araçları paketinin parçası olarak tüm macOS sürümlerine dahil edilmiştir . "AppleScript" terimi, dilin kendisine, dilde yazılmış tek bir komut dosyasına veya gayri resmi olarak, dilin temelini oluşturan macOS Açık Komut Dosyası Mimarisine atıfta bulunabilir .

genel bakış

AppleScript, öncelikle Apple tarafından , Apple olaylarını kullanarak uygulamalar arası iletişim (IAC) yapmak için geliştirilmiş bir betik dilidir . AppleScript, Apple olaylarıyla ilgilidir, ancak bunlardan farklıdır. Apple etkinlikleri, tekrarlayan görevleri otomatikleştirmek için diğer uygulamalar arasında veri alışverişi yapmak ve bunları kontrol etmek için tasarlanmıştır.

AppleScript, Apple olaylarını uygulamalara gönderip almanın yanı sıra kendine ait bazı işleme yeteneklerine sahiptir. AppleScript, temel hesaplamalar ve metin işleme yapabilir ve dile yeni işlevler ekleyen komut dosyası eklemelerinin kullanılmasına izin vererek genişletilebilir . Bununla birlikte, esas olarak AppleScript, karmaşık görevleri yerine getirmek için uygulamaların ve süreçlerin işlevselliğine güvenir. Bir itibariyle yapılandırılmış komut dili, AppleScript ile karşılaştırılabilir Unix kabukları , Microsoft Windows Komut Dosyası veya IBM REXX amacına içinde, ancak üçünün ayrıdır. Macintosh uygulamalarının adreslenebilir nesnelerin ve işlemlerin "sözlüklerini" yayınlaması, işlevselliği için esastır.

AppleScript, sözdiziminde prosedürel programlama , nesne yönelimli programlama (özellikle komut dosyası nesnelerinin yapımında) ve doğal dil programlama eğilimlerinin bazı öğelerine sahiptir , ancak bu programlama paradigmalarının hiçbirine tam olarak uymaz .

Tarih

1980'lerin sonlarında Elma kullanarak kabul HyperCard 'ın HyperTalk kodlama dili için standart dil olarak son kullanıcı geliştirme şirket genelinde ve içinde klasik Mac OS işletim sistemi ve için işlemler arası iletişimin Apple ve Apple olmayan ürünler arasında. HyperTalk, acemiler tarafından bir HyperCard yığınını programlamak için kullanılabilir. Apple mühendisleri, benzer, ancak daha nesne yönelimli bir betik dilinin herhangi bir uygulamayla kullanılmak üzere tasarlanabileceğini fark ettiler ve AppleScript projesi, Macintosh'u bir bütün olarak modernize etmeye yönelik bir araştırma çabasının yan ürünü olarak doğdu ve sonunda bunun bir parçası oldu. arasında Sistemi 7 .

AppleScript, Ekim 1993'te Sistem 7.1.1'in bir parçası olarak piyasaya sürüldü (Sistem 7 Pro, Sistem 7'ye yapılan ilk büyük yükseltme). QuarkXPress (sürüm 3.2), AppleScript'i destekleyen ilk büyük yazılım uygulamalarından biriydi. Bu da AppleScript'in yayıncılık ve baskı öncesi dünyasında geniş çapta benimsenmesine ve genellikle karmaşık iş akışlarını birbirine bağlamasına yol açtı. Bu, QuarkXpress ve diğer yayıncılık uygulamaları Microsoft Windows'a taşındıktan sonra bile, Macintosh'un yayıncılık ve baskı öncesindeki baskın konumunu korumada önemli bir faktördü.

Apple'ın yeni nesil işletim sisteminde AppleScript'in geleceği hakkında bazı belirsizliklerden sonra, Mac OS X'e (2002 civarında) ve onun Cocoa çerçevelerine geçiş, AppleScript'in kullanışlılığını ve esnekliğini büyük ölçüde artırdı. Kakao uygulamaları, uygulama geliştiricilerinin, doğrudan komut dosyası yazılabilen uygulamaların sayısını artırarak, minimum çabayla uygulamaları için temel kodlanabilirliği uygulamalarına olanak tanır. Aynı zamanda, Unix temellerine geçiş ve AppleScript'in do shell scriptkomutla birlikte Unix komutlarını doğrudan çalıştırma yeteneği , AppleScript'lerin işletim sistemi üzerinde çok daha fazla kontrol sahibi olmasını sağladı. AppleScript Studio ile yayımlanan, Mac OS X 10.2 parçası olarak Xcode ve daha sonra AppleScriptObjC yılında piyasaya çerçevede, Mac OS X 10.6 , kullanıcıların AppleScript kullanarak Kakao uygulamaları oluşturmak için izin verdi.

2006 tarihli bir makalede, Macworld AppleScript'i Apple'ın bugüne kadarki en önemli 30 ürünü sıralamasına dahil ederek 17. sıraya yerleştirdi.

Macworld için 2013 yılında yayınlanan bir makalesinde , kıdemli Mac yazılım geliştiricisi ve yorumcusu John Gruber , "AppleScript'in olası kalıcılığı" konusundaki düşüncelerini şu sözlerle sonlandırdı: "Teoride, AppleScript çok daha iyi olabilirdi; ancak pratikte, elimizdeki en iyi şey bu. Bu , tamirciler ve ileri düzey kullanıcılar için Mac'in iOS'a göre avantajlarını örnekliyor ."

Ekim 2016'da, uzun süredir AppleScript ürün müdürü ve otomasyon müjdecisi Sal Soghoian , pozisyonu "iş nedenleriyle" ortadan kaldırılınca Apple'dan ayrıldı. John Gruber ve Andy Ihnatko gibi Mac topluluğundaki deneyimli kişiler , Apple'ın geliştirici topluluğuna ve profesyonel kullanıcılara olan bağlılığını sorgulayarak genellikle endişeyle yanıt verdi. Apple'ın yazılım mühendisliği kıdemli başkan yardımcısı Craig Federighi , " macOS'taki harika otomasyon teknolojilerine desteğimizi sürdürmek için her türlü niyetimiz var!" Diyen bir e- postaya yanıt verdi, ancak The Mac Observer'dan Jeff Gamet, şüphesini gidermek için çok az şey yaptığını belirtti. genel olarak Apple otomasyonunun ve özel olarak AppleScript'in geleceği hakkında. Şu an için AppleScript, Automator , Shortcuts , Services ve kabuk komut dosyası oluşturma ile birlikte macOS otomasyon teknolojilerinin bir bileşeni olmaya devam ediyor .

Temel konseptler

AppleScript, kullanıcılara uygulamaları kontrol etmek ve verilere ve belgelere erişmek ve bunları değiştirmek için akıllı bir mekanizma sunan, erişilebilir bir son kullanıcı komut dosyası dili olarak kullanılmak üzere tasarlanmıştır. AppleScript , Macintosh işletim sisteminin uygulamalara bilgi göndermek için kullandığı bir dizi standartlaştırılmış veri formatı olan Apple olaylarını kullanır ; bu, web hizmetleri dünyasında XML-RPC üzerinden XPath sorguları göndermeye kabaca benzer . Apple olayları, bir komut dosyasının aynı anda birden çok uygulamayla çalışmasına ve aralarında veri ileterek karmaşık görevlerin insan etkileşimi olmadan gerçekleştirilebilmesine olanak tanır. Örneğin, basit bir web galerisi oluşturmak için bir AppleScript aşağıdakileri yapabilir:

  1. Bir fotoğraf düzenleme uygulamasında bir fotoğraf açın (o uygulamaya bir Open File Apple etkinliği göndererek ).
  2. Fotoğraf düzenleme uygulamasına görüntüyü değiştirmesini söyleyin (örn. çözünürlüğünü azaltın, kenarlık ekleyin, fotoğraf kredisi ekleyin)
  3. Fotoğraf düzenleme uygulamasına, değiştirilen görüntüyü farklı bir klasördeki bir dosyaya kaydetmesini söyleyin (bu uygulamaya bir Kaydet ve/veya Apple'ı Kapat etkinliği göndererek ).
  4. Yeni dosya yolunu (başka bir Apple etkinliği aracılığıyla) bir metin düzenleyiciye veya web düzenleyici uygulamasına gönderin
  5. Editör uygulamasına fotoğraf için bir HTML dosyasına bir bağlantı yazmasını söyleyin.
  6. Tüm bir görüntü klasörü (yüzlerce hatta binlerce fotoğraf) için yukarıdaki adımları tekrarlayın.
  7. Apple olaylarını bir grafik FTP istemcisine göndererek , yerleşik AppleScript komutlarını kullanarak veya Apple olaylarını Unix FTP yardımcı programlarına göndererek , gözden geçirilmiş fotoğrafların HTML dosyasını ve klasörünü bir web sitesine yükleyin .

Kullanıcı için, birden fazla uygulamadaki yüzlerce veya binlerce adım, komut dosyasını çalıştırmanın tek bir eylemine indirgenmiştir ve görev, çok daha kısa sürede ve rastgele insan hatası olasılığı olmadan gerçekleştirilir. Büyük bir karmaşık komut dosyası yalnızca bir kez çalışacak şekilde geliştirilebilirken, diğer komut dosyaları tekrar tekrar kullanılır.

Bir uygulamanın komut dosyası oluşturulabilir öğeleri, herhangi bir komut dosyası düzenleyicisinde görüntülenebilen uygulamanın Komut Dosyası Sözlüğü'nde (uygulamanın bir parçası olarak dağıtılır) görünür . Öğeler genellikle , aralarındaki gevşek işlevsel ilişkilere göre süitler halinde gruplandırılır . Herhangi bir süitte bulunan iki temel öğe türü vardır: sınıflar ve komutlar.

  • Sınıflar , komut dosyası yazılabilir nesnelerdir - örneğin, bir metin düzenleme uygulamasının pencereler, belgeler ve metinler için sınıfları neredeyse kesinlikle olacaktır - ve bu sınıflar değiştirilebilecek özelliklere (pencere boyutu, belge arka plan rengi, metin yazı tipi boyutu vb.) , ve diğer sınıfları içerebilir (bir pencere bir veya daha fazla belge içerir, bir belge metin içerir, bir metin nesnesi paragraflar, kelimeler ve karakterler içerir).
  • Komutlar , aksine, komut dosyası yazılabilir nesnelere verilebilecek talimatlardır. Bir AppleScript bloğunun genel biçimi, komut dosyası oluşturulabilir bir nesneye bir komut çalıştırmasını söylemektir .

Komut dosyası yazılabilir tüm uygulamalar, genellikle Standard Suite olarak adlandırılan birkaç temel komut ve nesneyi paylaşır - bir dosyayı açma, kapatma veya kaydetme, bir şeyi yazdırma, çıkma, verileri değişkenlere ayarlama komutları - ve ayrıca aşağıdakileri sağlayan temel bir uygulama nesnesi. uygulamanın kendisinin komut dosyası özellikleri. Birçok uygulamada, uygulamanın kendisinin gerçekleştirebileceği herhangi bir görevi gerçekleştirebilecek çok sayıda süit bulunur. İstisnai durumlarda, uygulamalar kendi komut dosyası sözlüklerini içeren eklentileri destekleyebilir.

AppleScript, kullanıcı eylemlerini kaydederek sezgisel olarak komut dosyaları oluşturma yeteneği ile tasarlanmıştır. Bu tür AppleScript kaydedilebilirliği, uygulamada tasarlanmalıdır; uygulama, Apple olaylarını ve AppleScript kaydını desteklemelidir; Finder, AppleScript kaydını desteklediğinden, başvuru için faydalı olabilir. Ne zaman AppleScript Editör (Senaryo Editör) açıktır ve Kayıt düğmesi tıklandığında, kaydedilebilir uygulamalar için kullanıcı eylemleri Script Editor penceresine eşdeğer AppleScript komutları ve çıkışa dönüştürülür. Ortaya çıkan komut dosyası kaydedilebilir ve orijinal eylemleri çoğaltmak için yeniden çalıştırılabilir veya daha genel olarak yararlı olacak şekilde değiştirilebilir.

Yorumlar

Yorumlar birden fazla şekilde yapılabilir. Tek satırlık bir yorum 2 tire ( -- ) ile başlayabilir . İlk olarak Mac OS X Leopard'da yayınlanan AppleScript 2.0'da, sayı işareti (#) ile de başlayabilir. Bu, bağımsız bir AppleScript betiğinin, Shebang satırıyla başlayan yürütülebilir bir metin dosyası olarak saklanmasına izin verir. #!/usr/bin/osascript Örnek:

--This is a one line comment
# So is this! (in Mac OS X Leopard or later)

AppleScript, birden çok satır alan yorumlar için içinde yıldız işareti olan parantezler kullanır. Örnek:

(* This is a
multiple
line
comment *)

Selam Dünya!

AppleScript'te geleneksel "Merhaba, Dünya!" program , aşağıdakiler de dahil olmak üzere birçok farklı biçimde yazılabilir:

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

AppleScript, iletişim kutuları, uyarılar ve seçim listesi dahil olmak üzere çeşitli kullanıcı arabirimi seçeneklerine sahiptir. ( Komut Dosyası Düzenleyicisi'nde ⌥ Option+ yazılarak üretilen ¬ karakteri, returntek bir ifadenin birden çok satırda devam ettiğini belirtir.)

-- 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

Her kullanıcı etkileşimi yöntemi, tıklanan düğmelerin, seçilen öğelerin veya daha sonraki işlemler için girilen metnin değerlerini döndürebilir. Örneğin:

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

Doğal dil metaforu

Apple olayları, uygulamalara mesaj göndermenin bir yolu olsa da, AppleScript, Apple olaylarını göndermek için tasarlanmış özel bir dildir. Yeni başlayanlar için kullanım kolaylığı hedefine uygun olarak, AppleScript dili , tıpkı grafik kullanıcı arayüzünün masaüstü metaforunda tasarlandığı gibi, doğal dil metaforu üzerine tasarlanmıştır . İyi yazılmış bir AppleScript, herkes tarafından okunup anlaşılabilecek ve kolayca düzenlenebilecek kadar açık olmalıdır. Dil, büyük ölçüde HyperCard'ın HyperTalk diline dayanmaktadır ve yalnızca HyperCard kart ve yığın dünyasına değil, aynı zamanda teorik olarak herhangi bir belgeye atıfta bulunmak üzere genişletilmiştir. Bu amaçla, AppleScript ekibi , herhangi bir belirli uygulamanın "bildiği" nesneleri belirten AppleEvent Nesne Modeli'ni (AEOM) tanıttı .

AppleScript dilinin kalbi, birleştirilebilen isimler ve fiiller gibi davranan terimlerin kullanılmasıdır. Örneğin, bir sayfayı, belgeyi veya sayfa aralığını (printPage, printDocument, printRange gibi) yazdırmak için farklı bir fiil yerine, AppleScript, sayfa, belge veya bir dizi sayfa.

print page 1

print document 2

print pages 1 thru 5 of document 2

Genel olarak, AEOM "belge" veya "paragraf" gibi bir dizi nesneyi ve "kes" ve "kapat" gibi karşılık gelen eylemleri tanımlar. Sistem ayrıca nesnelerin özelliklerine atıfta bulunmanın yollarını tanımlar, böylece "'İyi Günler' belgesinin üçüncü paragrafına" veya "ön pencerenin son kelimesinin rengine" atıfta bulunulabilir. AEOM , Apple olaylarını insan tarafından okunabilir terimlerle ilişkilendirmek için bir uygulama sözlüğü kullanır ve insan tarafından okunabilir AppleScript ve bytecode Apple olayları arasında ileri ve geri çeviriye izin verir . Bir programın hangi öğelerinin kodlanabilir olduğunu keşfetmek için desteklenen uygulamalar için sözlükler görüntülenebilir. ( Xcode ve Script Editor uygulamalarında bu, File → Open Dictionary altındadır .)

Hangi uygulamanın böyle bir mesajın hedefi olması gerektiğini belirlemek için AppleScript bir "tel" yapısı kullanır:

tell application "Microsoft Word"
  quit
end tell

Alternatif olarak, tell bir mastar kullanılarak bir satırda ifade edilebilir :

tell application "Microsoft Word" to quit

"Core Suite" içindeki olaylar için (etkinleştir, aç, yeniden aç, kapat, yazdır ve çık), uygulama geçişli komutlara doğrudan nesne olarak sağlanabilir :

quit application "Microsoft Word"

Nesne hiyerarşisi kavramı, iç içe bloklar kullanılarak ifade edilebilir:

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

Bir nesne hiyerarşisi kavramı, iç içe geçmiş edat ifadeleri kullanılarak da ifade edilebilir :

pixel 7 of row 3 of TIFF image "my bitmap"

bu sözde kodda olduğu gibi başka bir programlama dilinde sıralı yöntem çağrıları olarak ifade edilebilir :

getTIFF("my bitmap").getRow(3).getPixel(7);

AppleScript, sıralı sayma, "ilk paragraf" ve ayrıca ana "paragraf bir" için sözdizimi içerir. Aynı şekilde, sayıların kendilerine metin veya sayısal olarak atıfta bulunulabilir, "beş", "beşinci" ve "5" hepsi desteklenir; bunlar AppleScript'te eş anlamlıdır. Ayrıca, okunabilirliği artırmak için "the" sözcüğü yasal olarak komut dosyasının herhangi bir yerinde kullanılabilir: komut dosyasının işlevselliği üzerinde hiçbir etkisi yoktur.

betik örnekleri

Güvenli bir hesap makinesi:

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

Basit bir kullanıcı adı ve şifre iletişim kutusu dizisi. Burada, kullanıcı adı John ve şifre app123'tür:

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 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

Geliştirme araçları

Komut dosyası düzenleyicileri

Komut dosyası düzenleyicileri, komut dosyalarını oluşturma, doğrulama, derleme, çalıştırma ve hata ayıklama araçları dahil olmak üzere AppleScripts için birleşik bir programlama ortamı sağlar. Ayrıca, komut dosyası yazılabilir uygulamalardan AppleScript sözlüklerini açmak ve görüntülemek, komut dosyalarını çeşitli biçimlerde (derlenmiş komut dosyaları, uygulama paketleri, komut paketleri ve düz metin dosyaları) kaydetmek için mekanizmalar sağlarlar ve genellikle sözdizimi vurgulama ve önceden yazılmış kod parçacıkları gibi özellikler sağlarlar. .

Apple'dan

AppleScript Düzenleyici (Komut Dosyası Düzenleyici)
Denilen MacOS ile paketlenmiş AppleScript için editör, AppleScript Editör içinde Mac OS X Snow Leopard ile (10.6) OS X Mavericks (10.9) ve Senaryo Editör MacOS tüm önceki ve sonraki sürümlerinde. Komut dosyaları, derlenebilecekleri ve çalıştırılabilecekleri belge düzenleme pencerelerinde yazılır ve bu pencereler, günlüğe kaydedilen bilgilerin, yürütme sonuçlarının ve hata ayıklama amacıyla diğer bilgilerin mevcut olduğu çeşitli bölmeler içerir. Komut dosyası sözlüklerine ve önceden yazılmış kod parçacıklarına uygulama menüleri aracılığıyla erişilebilir. OS X Yosemite (10.10)'dan bu yana , Komut Dosyası Düzenleyicisi hem AppleScript hem de JavaScript'te yazma yeteneği içerir .
Xcode
AppleScript'leri düzenlemeye veya AppleScript ile yazılmış tam teşekküllü uygulamalar oluşturmaya yönelik özelliklere sahip uygulamalar geliştirmeye yönelik bir araç takımı.

Üçüncü şahıslardan

Senaryo Debugger gelen Late Night Yazılım
AppleScript için bir üçüncü taraf ticari IDE. Komut Dosyası Hata Ayıklayıcı, komut dosyası yazarının AppleScript'lerde tek adım , kesme noktaları , işlevlere/alt yordamlara girip çıkma, değişken izleme vb. aracılığıyla hata ayıklamasına olanak tanıyan daha gelişmiş bir AppleScript ortamıdır. sözlük gerçek dünya durumlarında iş başında. Bu oldukça adil bir sözlük kapakları, tek bir belgeyi açabilirsiniz ne listeleme daha vardır Sayfalar , örneğin, ve Sözlüğün terimler bu belgenin nasıl uygulanacağını öğrenmek daha kolay olan sözlük parça kullanımına belirlemek için yapım. Komut Dosyası Hata Ayıklayıcı, temel uyarılar ve diyaloglar dışında bir GUI ile komut dosyaları oluşturmak için tasarlanmamıştır, ancak daha çok komut dosyalarının kodlanması ve hata ayıklamasına odaklanır.
Smile ve SmileLab
Tamamen AppleScript ile yazılmış, AppleScript için üçüncü taraf ücretsiz yazılım/ticari IDE. Smile ücretsizdir ve öncelikle AppleScript geliştirme için tasarlanmıştır. SmileLab, sayısal analiz, grafik oluşturma, makine otomasyonu ve web üretimi için kapsamlı eklemelere sahip ticari bir yazılımdır. Smile ve SmileLab bir dizi farklı pencere kullanır: Tam komut dosyalarını çalıştırmak ve kaydetmek için AppleScript pencereleri, kodu satır satır test etmek için AppleScript terminalleri, metin ve XML ile çalışmak için unicode pencereleri. Kullanıcılar, AppleScript'teki yerleşik diyalogların yetersiz olduğu durumlar için diyalog adı verilen karmaşık arabirimler oluşturabilir.
ASObjC Explorer 4, Shane Stanley'den
Özellikle için AppleScript için bir durdurulan üçüncü taraf ticari IDE, AppleScriptObjC . Ana özellik Kakao -nesne/olay günlüğü, hata ayıklama ve kod tamamlamadır. Kullanıcılar, diğer komut dosyası yazılabilir uygulamalar gibi Kakao olaylarını ve nesnelerini okuyabilir. Bu araç orijinal olarak AppleScript Kitaplıkları için oluşturulmuştur ( OS X Mavericks'te mevcuttur ). AppleScript Kitaplıkları, yeniden kullanılabilir AppleScript bileşenlerini amaçlar ve yerleşik AppleScript sözlüğünü (sdef) destekler. ASObjC Explorer 4, harici bir Xcode komut dosyası düzenleyicisi de olabilir.
Late Night Yazılımından FaceSpan
Grafik kullanıcı arabirimleri ile AppleScript uygulamaları oluşturmak için durdurulan bir üçüncü taraf ticari IDE.

Komut dosyası başlatıcıları

AppleScript'ler bir komut dosyası düzenleyicisinden çalıştırılabilir, ancak komut dosyalarını bir komut dosyası düzenleyici uygulamasını açmadan doğrudan çalıştırmak genellikle daha uygundur. Bunu yapmak için bir dizi seçenek vardır:

uygulamalar
AppleScript'ler bir komut dosyası düzenleyicisinden uygulamalar olarak kaydedilebilir ( appletler veya sürükle ve bırak yoluyla girişi kabul ettiklerinde damlacıklar olarak adlandırılır ). Uygulamalar Dock'tan , Finder pencerelerinin araç çubuğundan, Spotlight'tan , üçüncü taraf uygulama başlatıcılarından veya uygulamaların çalıştırılabileceği başka herhangi bir yerden çalıştırılabilir.
Klasör eylemleri
AppleScript klasör eylemleri kullanılarak, klasörlerde belirli değişiklikler meydana geldiğinde (dosya ekleme veya kaldırma gibi) komut dosyaları başlatılabilir. Klasör eylemleri, bir klasöre tıklanarak ve bağlamsal menüden Klasör Eylemleri Kurulumu... seçilerek atanabilir ; Bu komutun konumu, Mac OS X 10.6.x'te önceki sürümlerden biraz farklıdır. Aynı eylem, Hazel gibi üçüncü taraf yardımcı programlarla da gerçekleştirilebilir.
Kısayol başlatıcıları
Klavye kısayolları kullanarak komut menüsündeki AppleScripts atanabilecek Klavye & Fare Ayarları Tercihi Pane içinde Sistem Tercihleri . Ayrıca, tuş kombinasyonlarını kullanarak AppleScripts'i isteğe bağlı olarak çalıştırabilen Alfred , FastScripts, Keyboard Maestro , QuicKeys, Quicksilver , TextExpander gibi çeşitli üçüncü taraf yardımcı programları mevcuttur .
Skript menüsü
Bu sistem genelindeki menü, hangi uygulama çalışırsa çalışsın görünür şekilde macOS menü çubuğundan AppleScript'lere erişim sağlar. (Ayrıca, birçok Apple uygulaması, bazı üçüncü taraf uygulamaları ve bazı eklentiler kendi komut dosyası menülerini sağlar. Bunlar farklı şekillerde etkinleştirilebilir, ancak hepsi temelde aynı şekilde çalışır.) Komut dosyası menüsünde bir komut dosyası seçilmesi başlatılır. o. Mac OS X 10.6.x'ten beri, sistem genelindeki komut dosyası menüsü, Komut Dosyası Düzenleyicisi'nin tercihlerinden etkinleştirilebilir ; Mac OS X'in önceki sürümlerinde, AppleScript Utility uygulamasından etkinleştirilebilir. İlk etkinleştirildiğinde, komut dosyası menüsü, Komut Dosyası Düzenleyici'de açılabilen ve AppleScript'i öğrenmek için örnek olarak kullanılabilen, oldukça genel, işlevsel AppleScript'lerin varsayılan kitaplığını görüntüler. Komut dosyaları, yalnızca belirli uygulamalar ön planda olduğunda menüde görünecek şekilde düzenlenebilir.
Unix komut satırı ve launchd
AppleScript'ler, osascript komut satırı aracı kullanılarak Unix komut satırından veya zamanlanmış görevler için launchd'dan çalıştırılabilir. Osascript aracı, derlenmiş komut dosyalarını (.scpt dosyaları) ve düz metin dosyalarını (.applescript dosyaları—bunlar çalışma zamanında araç tarafından derlenir) çalıştırabilir. Komut dosyası uygulamaları, Unix open komutu kullanılarak çalıştırılabilir.

İlgili komut dosyası sorunları

AppleScript Kitaplıkları
Yeniden kullanılabilir AppleScript modülleri ( OS X Mavericks'ten beri mevcuttur ), AppleScript veya AppleScriptObjC ile yazılmıştır ve diğer komut dosyalarından çağrılabilen belirli konumlarda komut dosyası dosyaları veya demetler olarak kaydedilmiştir. Bir paket olarak kaydedildiğinde, bir kitaplık bir AppleScript sözlük (sdef) dosyası içerebilir, böylece bir komut dosyası eklemesi gibi çalışır, ancak AppleScript veya AppleScriptObjC ile yazılır.
AppleScript Stüdyosu
Mac OS X 10.4 ve 10.5'teki Xcode paketinin bir parçası olan AppleScript uygulamalarına Cocoa arabirimleri eklemek için bir çerçeve, artık AppleScriptObjC lehine kullanımdan kaldırılmıştır.
AppleScriptObjC
Mac OS X Snow Leopard'dan bu yana Xcode paketinin bir parçası olan AppleScript/Objective-C veya ASOC olarak da adlandırılan bir Cocoa geliştirme yazılımı çerçevesi . AppleScriptObjC, AppleScript'lerin Cocoa sınıflarını ve yöntemlerini doğrudan kullanmasına izin verir. Aşağıdaki tablo, çeşitli macOS sürümlerinde AppleScriptObjC'nin kullanılabilirliğini gösterir:
AppleScriptObjC'nin her macOS sürümünde kullanılabileceği yerler
In Xcode uygulamalarda In AppleScript
Kütüphaneleri
In Script Editor
10.6 Evet
10.7 Evet Evet
10.8 Evet Evet
10.9 Evet Evet Evet
10.10 Evet Evet Evet Evet
otomatikleştirici
İş akışlarının eylemlerden oluşturulduğu grafiksel, modüler bir düzenleme ortamı . Programlama bilgisi gerektirmeden AppleScript'in birçok işlevini çoğaltmak amaçlanmıştır. Automator, Automator'ın basitleştirilmiş çerçevesi için fazla karmaşık olan görevler için AppleScript'leri içermek ve çalıştırmak üzere özel olarak tasarlanmış bir eyleme sahiptir.
Komut dosyası yazılabilir çekirdek sistem uygulamaları
macOS ile paketlenmiş bu yalnızca arka planda çalışan uygulamalar, AppleScript'in normalde komut dosyası oluşturulamayan özelliklere erişmesine izin vermek için kullanılır. Mac OS X 10.6.3'ten itibaren, bunlar VoiceOver (komut dosyası oluşturulabilen işitsel ve braille ekran okuyucu paketi), Sistem Olayları (komut dosyası oluşturulamayan uygulamaların kontrolü ve belirli sistem işlevlerine ve temel dosya işlemlerine erişim), Yazıcı Kurulum Yardımcı Programı ( yazdırma işlerini yürütmek için komut dosyası oluşturulabilir yardımcı program), Görüntü Olayları (temel görüntü işleme), HelpViewer (yardım ekranlarını göstermek için komut dosyası oluşturulabilir yardımcı program), Veritabanı Olayları (minimal SQLite3 veritabanı arabirimi) ve AppleScript Yardımcı Programı (birkaç AppleScript ile ilgili tercihi komut dosyası yazmak için) de sistem tarafından kullanılan birkaç yardımcı uygulama olarak.
Komut Dosyası Eklemeleri (OSAX)
Apple veya üçüncü taraflarca geliştirilen AppleScript eklentileri. Yerleşik komut setini genişletmek, AppleScript'in özelliklerini genişletmek ve onu uygulamalar tarafından sağlanan işlevselliğe daha az bağımlı hale getirmek için tasarlanmıştır. macOS, kullanıcı etkileşimi iletişim kutuları, dosyaları okuma ve yazma, dosya sistemi komutları, tarih işlevleri dahil olmak üzere AppleScript'in temel özelliklerinin parçası olmayan bir dizi komut ve sınıf ekleyen , Standart Eklemeler ( StandardAdditions.osax ) olarak adlandırılan bir komut dosyası ekleme koleksiyonu içerir. , ve metin ve matematiksel işlemler; bu OSAX olmadan, AppleScript'in bir uygulama tarafından doğrudan sağlanmayan birçok temel eylemi gerçekleştirme kapasitesi olmazdı.

Dil temelleri

Sınıflar (veri türleri)

Uygulamalar özel sınıflar (veya veri türleri) tanımlayabilirken, AppleScript ayrıca bir dizi yerleşik sınıfa sahiptir. Bu temel veri sınıfları, doğrudan dil tarafından desteklenir ve komut dosyası yazılabilir uygulamalar tarafından evrensel olarak tanınmaya eğilimlidir. En yaygın olanları aşağıdaki gibidir:

  • Temel nesneler
    • application : çoğunlukla tell ifadeleri için belirteç olarak kullanılan bir uygulama nesnesi ( tell application "Finder" …).
    • komut dosyası : bir komut dosyası nesnesi. Komut dosyası nesneleri, komut dosyaları için kaplardır. Her AppleScript, çalıştırıldığında bir komut dosyası nesnesi oluşturur ve AppleScripts içinde komut dosyası nesneleri oluşturulabilir.
    • class : diğer nesnelerin türünü belirten bir meta-nesne.
    • referans : geçerli bir nesneye işaret edebilen veya göstermeyebilen, değerlendirilmemiş bir nesne belirtecini içine alan bir nesne. contentsÖzelliğine erişilerek isteğe bağlı olarak değerlendirilebilir .
  • Standart veri nesneleri
    • sabit : sabit bir değer. Orada gibi dil tanımlı sabitler, bir dizi pi, tabve linefeed.
    • boolean : Boolean doğru/yanlış değeri. Aslında bir alt sınıf arasında constant.
    • numara : Bir nadiren kullanılan soyut üst sınıf arasında integerve real.
    • tamsayı : bir tamsayı . Yerleşik matematiksel operatörler ile manipüle edilebilir.
    • real : kayan noktalı ( gerçek ) bir sayı. Yerleşik matematiksel operatörler ile manipüle edilebilir.
    • tarih : bir tarih ve saat.
    • metin : metin. 2.0 (Mac OS X 10.4 ve altı) daha önce AppleScript sürümlerinde textsınıfı farklı olduğu stringve Unicode textve üç farklı bir şekilde davranmış; 2.0 (10.5) ve sonraki sürümlerde bunların tümü eş anlamlıdır ve tüm metinler UTF-16 (“ Unicode ”) kodlu olarak işlenir .
  • Konteynerler
    • list : sıralı bir nesne listesi. Uygulamalar tarafından tanımlanan diğer listeler ve sınıflar da dahil olmak üzere herhangi bir sınıfı içerebilir.
    • kayıt : anahtarlı bir nesne listesi. Anahtar/değer çiftleri olarak yapılandırılması dışında bir liste gibi . Çalışma zamanı anahtarlı erişim desteklenmez; tüm anahtarlar, derleme zamanı sabit tanımlayıcıları olmalıdır.
  • Dosya sistemi
    • takma ad : bir dosya sistemi nesnesine (dosya veya klasör) başvuru. Takma ad, nesne taşınırsa veya yeniden adlandırılırsa, nesneyle olan bağlantısını korur.
    • file : bir dosya sistemi nesnesine (dosya veya klasör) başvuru. Bu statik bir referanstır ve şu anda var olmayan bir nesneye işaret edebilir.
    • POSIX dosyası : Unix ( POSIX ) stili eğik çizgi (/) gösterimi kullanılarak düz metin olarak bir dosya sistemi nesnesine (dosya veya klasör) başvuru . AppleScript, POSIX dosyalarını kullanıldıklarında otomatik olarak sıradan dosyalara dönüştürdüğü için gerçek bir veri türü değildir.
  • Çeşitli
    • RGB rengi : renklerle çalışan komutlarda ve nesnelerde kullanım için bir RGB üçlüsü ( 16-bit yüksek renk biçiminde) belirtir.
    • birim türleri : standart birimler arasında dönüştürme yapan sınıf. Örneğin, bir değer olarak tanımlanabilir square yards, ardından square feetbirim türleri arasında döküm yaparak ( asoperatör kullanılarak) dönüştürülebilir.

Dil yapıları

Birçok AppleScript işlemi, bir bloğun bir komut komutuyla başladığı ve bir bitiş komut ifadesi ile bittiği kod blokları tarafından yönetilir . En önemli yapılar aşağıda açıklanmıştır.

Şartlılar

AppleScript iki tür koşul önermesi sunar.

-- 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

döngüler

AppleScript'in tekrar döngüsü, biraz farklı tatlarda gelir. Hepsi, tekrar ve son tekrar satırları arasındaki bloğu birkaç kez yürütür . Döngü, komut çıkış tekrarı ile zamanından önce durdurulabilir .

Sonsuza kadar tekrarlayın.

repeat
     -- commands to be repeated
end repeat

Belirli bir sayıda tekrarlayın.

repeat 10 times
     -- commands to be repeated
end repeat

Koşullu döngüler. Blok içi tekrar ise uzun true durum değerlendirir olarak döngü yürütür. Koşul, bloğun her yürütülmesinden sonra yeniden değerlendirilir. Kadar tekrar döngü aksi aynıdır, ancak blok uzunca bir süre geçersiz olan durum değerlendirir olarak yürütülür.

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

Bir değişkenle döngü. Döngü başlatılırken, değişken başlangıç ​​değerine atanır. Bloğun her yürütülmesinden sonra, değişkene isteğe bağlı adım değeri eklenir. Adım değeri varsayılan olarak 1'dir.

-- 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

Bir listeyi numaralandırın. Her yinelemede loopVariable öğesini verilen listede yeni bir öğeye ayarlayın

set total to 0
repeat with loopVariable in {1, 2, 3, 4, 5}
	set total to total + loopVariable
end repeat
Uygulama hedefleme Hata yönetimi
-- Simple form
tell application "Safari" to activate

-- Compound
tell application "MyApp"
     -- commands for app
end tell
try
     -- commands to be tested
on error
     -- error commands 
end try

Bu blok yapısındaki önemli bir varyasyon, işleyicileri (fonksiyon benzeri alt rutinler) tanımlamak için kullanılan on - end ... blokları biçimindedir . Eylemciler ile başlar () functionName üzerinde ve ile biten uç functionName ve komut yere çağrılabilir olmadıkça, normal komut akışının bir parçası olarak yerine getirilmez.

İşlev işleyicisi Klasör eylemleri bloğu İşleyiciyi çalıştır
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

İşleyiciler ayrıca "on" yerine "to" kullanılarak tanımlanabilir ve parantez içine alınmayan etiketli parametreleri kabul etmek için yazılabilir.

Etiketli parametrelere sahip işleyici "To" ve etiketli parametreleri kullanan işleyici
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

AppleScript'te, her biri yukarıda gösterilen çalıştırma işleyicisiyle aynı şekilde oluşturulan dört tür önceden tanımlanmış işleyici vardır: çalıştır, aç, boşta ve çık.

İşleyiciyi çalıştır
Komut dosyası çalıştırıldığında çağrılan komut dosyasının ana kodunu tanımlar. Çalıştırma işleyici blokları, komut dosyasına bağımsız değişkenler iletilmediği sürece isteğe bağlıdır. Açık bir çalıştırma işleyici bloğu atlanırsa, işleyici blokları içinde yer almayan tüm kodlar, örtük bir çalıştırma işleyicisindeymiş gibi yürütülür.
İşleyiciyi aç
"Açık theItems" kullanılarak tanımlanır.
on open theItems
     repeat with thisItem in theItems
         tell application "Finder" to update thisItem
     end repeat 
end open

"Açık işleyici" içeren bir komut dosyası bir uygulama olarak kaydedildiğinde, uygulama bir damlacık olur. Finder'da bir damlacık, öğelerin simgeye bırakılabileceğini gösteren bir ok içeren simgesiyle tanımlanabilir. işleyici, dosyalar veya klasörler damlacık simgesine bırakıldığında yürütülür.Damlacık simgesine bırakılan öğelere yapılan referanslar, açık işleyicinin parametresi olarak damlacık komut dosyasına iletilir.Bir damlacık, sıradan bir uygulamayla aynı şekilde başlatılabilir, çalıştırma işleyicisini yürütür.

Boşta işleyici
Uygulama boştayken sistem tarafından periyodik olarak çalıştırılan bir alt yordam.
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

Boşta çalışan bir işleyici, açık kalma uygulamaları olarak kaydedilen uygulamalarda veya damlacıklarda kullanılabilir ve belirli verileri veya olayları izleyen komut dosyaları için kullanışlıdır. Boşta kalma süresinin uzunluğu varsayılan olarak 30 saniyedir, ancak alt yordamın sonuna bir 'return x' ifadesi eklenerek değiştirilebilir; burada x, işleyiciyi yeniden çalıştırmadan önce sistemin beklemesi gereken saniye sayısıdır.

İşleyiciden çık
Uygulama bir Çıkış isteği aldığında çalıştırılan bir işleyici. Bu, çıkmadan önce verileri kaydetmek veya diğer bitirme görevlerini yapmak için kullanılabilir.
on quit
     --commands to execute before the script quits
  continue quit -- required for the script to actually quit
end quit
Komut dosyası nesneleri

Komut dosyası nesneleri, sözdizimi kullanılarak açıkça tanımlanabilir:

script scriptName
     -- commands and handlers specific to the script
end script

Komut dosyası nesneleri, uygulama nesneleri için kullanılan aynı 'tel' yapılarını kullanabilir ve dosyalardan yüklenebilir ve dosyalara kaydedilebilir. Çalışma zamanı yürütme süresi, bazı durumlarda komut dosyası nesneleri kullanılarak azaltılabilir.

Çeşitli bilgiler

  • Değişkenler kesin olarak yazılmaz ve bildirilmeleri gerekmez. Değişkenler herhangi bir veri türünü alabilir (komut dosyaları ve işlevler dahil). Aşağıdaki komutlar, değişken oluşturma örnekleridir:
    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
    
  • Komut dosyası nesneleri tam nesnelerdir; yöntemleri ve verileri kapsülleyebilir ve bir üst komut dosyasından veri ve davranış devralabilir.
  • Altyordamlar doğrudan uygulama tell bloklarından çağrılamaz. Bunu yapmak için 'benim' veya 'benden' anahtar kelimelerini kullanın.
tell application "Finder"
    set x to my myHandler()
    -- or
    set x to myHandler() of me
end tell

on myHandler()
    --commands
end myHandler

Komut dosyası ekleme komutları için aynı tekniği kullanmak, hataları azaltabilir ve performansı iyileştirebilir.

tell application "Finder"
	set anyNumber to my (random number from 5 to 50)
end tell

Açık Komut Dosyası Mimarisi

AppleScript uygulamasının önemli bir yönü, Açık Komut Dosyası Mimarisi'dir ( OSA ). Apple, AppleScript ile eşit durumda çalışmak üzere diğer komut dosyası dilleri ve QuicKeys ve UserLand Frontier gibi üçüncü taraf komut dosyası oluşturma/otomasyon ürünleri için OSA sağlar . AppleScript bir komut dosyası oluşturma bileşeni olarak uygulandı ve bu tür bileşenlerin OSA'ya arayüzlenmesi için temel özellikler herkese açıktı ve diğer geliştiricilerin sisteme kendi komut dosyası bileşenlerini eklemelerine izin verdi. Komut dosyalarını yüklemek, kaydetmek ve derlemek için genel istemci API'leri , bu tür tüm bileşenler için aynı şekilde çalışır; bu da, uygulamaların ve damlacıkların bu komut dosyası dillerinden herhangi birinde komut dosyaları tutabileceği anlamına gelir.

OSA'nın bir özelliği, HyperCard'ın Harici Komutlarından esinlenen komut dosyası eklemeleri veya Open Scripting Architecture eXtension için OSAX'tır . Komut dosyası eklemeleri, programcıların AppleScript işlevini genişletmesine izin veren kitaplıklardır . Komut dosyası eklemeleri olarak dahil edilen komutlar, sistem genelinde mevcuttur ve bir uygulamaya bağlı değildir (ayrıca bkz . § AppleScript Kitaplıkları ). AppleScript Düzenleyici ayrıca bazı OSA dillerini doğrudan düzenleyebilir ve çalıştırabilir.

Otomasyon için JavaScript

Altında OS X Yosemite ve MacOS sonraki sürümlerinde, Otomasyon JavaScript ( JXA ) bileşeni kalıntılar AppleScript sadece ciddi OSA dil alternatif, Macintosh sürümleri olsa Perl , Python , Ruby ve Tcl Elma etkinlikler üzerinde çalışırken tüm destek yerli yollarla OSA bileşenleri olmadan.

JXA ayrıca bir Objective-C (ve C dili) yabancı dil arayüzü sağlar. WebKit'in JavaScriptCore motorunu temel alan bir ortam olan JavaScript özellik seti, sistem Safari tarayıcı motoruyla senkronizedir. JXA, bir JavaScript modül sistemi sağlar ve ayrıca browserify aracılığıyla CommonJS modüllerini kullanmak da mümkündür .

Ayrıca bakınız

  • BBEdit - yüksek oranda komut dosyası yazılabilir bir metin düzenleyici

Referanslar

daha fazla okuma

Dış bağlantılar