AppleScript学习笔记(一)初识AppleScript
關(guān)于AppleScript
說到AppleScript,可能涉及到三個(gè)含義:
1.AppleScript語言:就是蘋果腳本的語言,用來編寫運(yùn)行于Mac系統(tǒng)的腳本。
2.AppleScript腳本:就是使用AppleScript語言編寫的一系列指令。以后簡稱腳本。
3.AppleScript腳本解釋程序:用于解釋和執(zhí)行AppleScript腳本中指令的程序。是Mac系統(tǒng)的原生程序和重要組成部分。下面簡稱AppleScript腳本程序。
AppleScript Editor
要編寫AppleScript腳本,當(dāng)然就需要編輯工具了,首先打開AppleScript編輯器:
貌似可以使用Xcode編寫Cocoa - AppleScript Application,這個(gè)暫時(shí)還沒嘗試。我們先從AppleScript編輯器開始。
界面很簡單,主要分為工具欄、編輯區(qū)和運(yùn)行結(jié)果區(qū)。編輯區(qū)用來編寫腳本,工具欄用來編譯和運(yùn)行腳本等,運(yùn)行結(jié)果區(qū)呈現(xiàn)運(yùn)行結(jié)果,這個(gè)不用多說了吧。
say和beep
首先來玩兩件很好玩的事:讓Mac發(fā)音和說話。
在編輯區(qū)輸入以下腳本:
say "How are you?" using "Zarvox"
say "Fine, thank you." using "Victoria"
say "Ha Ha"
beep
點(diǎn)擊工具欄的編譯(或Command + K),可以看到腳本變了顏色,具體顏色的含義,可以在偏好設(shè)置中查看并設(shè)置:
接著點(diǎn)擊運(yùn)行(Command + R運(yùn)行,Command + .停止運(yùn)行)。可以看到運(yùn)行結(jié)果區(qū)的回復(fù)欄中的顯示如下:
更加好玩的是Mac系統(tǒng)在自然自語了,還有最后的一聲咚。
下面來解釋下腳本和運(yùn)行結(jié)果的意思:
say "說話的內(nèi)容" using "指定人的嗓音"
這句腳本的意思就是讓Mac系統(tǒng)按照指定人的嗓音說出我們指定的說話內(nèi)容。當(dāng)然using "..."是可以缺省的。
beep 發(fā)聲次數(shù)
這句腳本的意思是讓Mac系統(tǒng)發(fā)出咚的聲音,發(fā)聲次數(shù)決定了咚出現(xiàn)的次數(shù),例如beep 2那么Mac會(huì)咚兩次。發(fā)聲次數(shù)缺省為1。
在運(yùn)行時(shí)回復(fù)輸出的意思是:
tell表明將以上say和beep的任務(wù)交付給current application去完成,也就是AppleScript腳本程序。
tell模塊
同樣道理,我們可以用tell模塊將特定的任務(wù)交付給Mac中特定的程序去執(zhí)行。
tell模塊的語法為:
tell application "Application Name"
do your job here
end tell
例如我們想讓Finder程序清空垃圾簍然后打開磁盤,可以這樣寫:
tell application "Finder"empty the trashbeepopen the startup disk
end tell
注意"Finder"的雙引號(hào)必不可少。
回復(fù)輸出為:
tell application "Finder"empty trash--> current application--> error number 0beep--> error number -10004
end tell
tell current applicationbeep
end tell
tell application "Finder"open startup disk
end tell
可以看到empty the trash任務(wù)是交給Finder程序去完成的,而beep任務(wù)是交給current application程序去完成,接下來的open the startup disk任務(wù)還是交回給Finder程序完成。
在tell模塊中的任意位置可以插入beep,say等由current application程序解釋執(zhí)行的語句。
注意,交付給某個(gè)程序執(zhí)行的語句必須在tell模塊之內(nèi)。
錯(cuò)誤寫法:
tell application "Finder"empty the trashbeep
end tell
open the startup disk
編譯時(shí)可以看到?jīng)]有報(bào)錯(cuò),運(yùn)行起來看看:
運(yùn)行結(jié)果區(qū)的回復(fù)輸出如下:
tell application "Finder"empty trash--> current application--> error number 0beep--> error number -10004
end tell
tell current applicationbeep
end tell
tell application "AppleScript Editor"open startup disk--> missing value
end tell
結(jié)果:
missing value
boot應(yīng)該由Finder程序去打開,但是由于超出了tell applicaiton "Finder"模塊,所以給語句將交由AppleScript Editor程序解釋執(zhí)行,很可惜,AppleScript編輯器無法打開boot,報(bào)錯(cuò)。
AppleScript Editor的小技巧
1.使用esc鍵呼出代碼補(bǔ)全菜單
在寫te時(shí)按下esc鍵,此時(shí)出現(xiàn)代碼補(bǔ)全菜單:
2.在編輯區(qū)點(diǎn)擊右鍵(或按住control鍵再點(diǎn)擊左鍵)呼出上下文菜單
在上下文菜單中我們可以將AppleScript語句快速地插入到編輯區(qū)中,例如:
也可以將一段語句插入到Tell語句塊中,方法是先選中這段語句,再插入到Tell Blocks中:
3.編輯程序的補(bǔ)全和修正功能
你可以輸入:
tell app "Finder"
end
在編譯后將被替換為:
tell application "Finder"
end tell
在編寫AppleScript腳本時(shí),是不區(qū)分大小寫的,當(dāng)然在編譯過后也會(huì)被替換成正確的大小寫形式。
這些小技巧都非常有利于快速編寫腳本。
保存腳本
寫好了程序,當(dāng)然是保存了。可以在菜單中點(diǎn)擊文件 —— 存儲(chǔ)(或按快捷鍵Command + S)。
在保存時(shí)有多種文件格式:
保存為腳本格式
如果保存為腳本,那么下次打開文件時(shí)還是用AppleScript編輯程序來打開。文件后綴為.scpt,桌面圖標(biāo)如下:
保存為應(yīng)用程序格式
如果保存為應(yīng)用程序,那么最好保留個(gè)腳本的copy,否則將不能用AppleScript Editor來打開編輯。
保存時(shí)的對(duì)話框如下:
如果選中“顯示啟動(dòng)屏幕”,那么以后運(yùn)行程序前會(huì)彈出一個(gè)對(duì)話框提示:
如果選中“運(yùn)行處理程序后保持打開”選項(xiàng),那么在程序運(yùn)行完畢后會(huì)停留在Dock中。
保存的圖標(biāo)和腳本格式不同。文件后綴為.app,桌面圖標(biāo)如下(少了個(gè)紙張背景):
后記:
事實(shí)上,在保存為應(yīng)用程序后,還是可以修改其腳本內(nèi)容的。方法如下:
1.右擊應(yīng)用程序,點(diǎn)擊顯示包內(nèi)容。
2.打開Contents —— Resources —— Scripts —— main.scpt(該文件可以用AppleScriptEditor打開并編輯其代碼),如下:
3.修改其代碼可以修改應(yīng)用程序的功能。
第一篇學(xué)習(xí)筆記先到這里,后面會(huì)繼續(xù)更新。
更多詳細(xì)內(nèi)容請(qǐng)參考《AppleScript for Absolute Starters》一書(中文名為《蘋果腳本跟我學(xué)》)。
總結(jié)
以上是生活随笔為你收集整理的AppleScript学习笔记(一)初识AppleScript的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MongoDB查询实现 笛卡尔积,Uni
- 下一篇: 最值得程序员get的30本行业干货