AppleScript 快速入门
AppleScript 快速入門
- AppleScript 快速入門
- 一、讓其他程序執行任務
- 二、數據類型
- 三、條件語句
- 四、循環
- 五、函數
- 六、用戶交互對話框
- 七、使用詞典
- 八、操作其他程序的界面
- 九、運行參數
AppleScript 顧名思義是蘋果開發的一套腳本語言,利用 AppleScript 在 macOS 系統上可以對其他程序進行操作,點擊按鈕、發送消息、模擬自動化執行功能,比如可以打開瀏覽器,清空回收站等等一些操作,是一個非常有意思的腳本。說好了要快速入門,下面我們開始快速學習了解它吧。
一、讓其他程序執行任務
在 macOS 上有一個應用叫腳本編輯器,通過 Launchpad 可以搜索到,打開腳本編輯器之后,可以看到支持編寫和解析 AppleScript 和 JavaScript 兩種腳本,如下圖所示:
AppleScript 的語法和平時的英語語法很類似,你想讓哪個程序執行操作,就 tell 它,比如你想讓 Finder 清空回收站那就這樣寫:
tell application "Finder"empty the trash end tell在腳本編輯器上點擊運行按鈕就可以看到回收站的內容被清空了,或者按快捷鍵 Command + R 也能運行,運行之前記得回收站得有東西,不然可能會執行失敗。
如果你想讓系統說話,可以這樣寫:
tell application "Finder"say "My name is exchen" end tell哈哈,記得把電腦的聲音打開,是不是聽到說話了?不僅支持英文和中文,其他國家語言,像德語、荷蘭語筆者試過,同樣也可以。
如果你想讓瀏覽器打開 URL,可以這樣寫:
set myBlog to "http://www.exchen.net"# 告訴 Chrmoe 瀏覽器打開 URL tell application "Google Chrome"# 新建一個 chrome 窗口set window1 to make new windowtell window1set currTab to active tab of window1set URL of currTab to myBlogend tell end tell看看 Chrmoe 瀏覽器是不是打開了你指定的 URL 了?有意思吧?
上面的測試代碼都是在腳本編輯器里運行的,如何脫離腳本編輯器,直接在系統上運行呢?我們可以保存或導出腳本,點擊文件菜 -> 存儲,可以看到支持的格式有四種,如圖所示:
保存為腳本類型,然后通過 osascript 來執行腳本,如下:
/usr/bin/osascript test1.scpt如果保存為應用程序類型,就是一個 .app 的包,直接雙擊打開就能運行。
二、數據類型
AppleScript 的數據類型比較簡單,一般常用的有 number、string、list、record,也就是數字類型、字符串類型、列表類型、字典類型。
數字類型的賦值和使用如下:
set num1 to 10 # 給 num1 賦值 set num2 to 20 # 給 num2 賦值 set num3 to num1 + num2 # num1 + num2 賦值給 num3 set num4 to num3 * 2 # num3 * 2 賦值給 num4字符串類型的賦值和使用如下:
set str1 to "exchen.net" set str2 to "hehe" set str3 to str1 & str2字符串與數字的轉換方法如下:
set str3Len to the length of str3 set numToStr to num1 as string set strToNum to "123" as number列表類型其實就是相當于數組,定義和操作列表類型的方法如下:
set myLists to {1, 2, "str", 4, 5} # 定義列表數據 set item 3 of myLists to "exchen" #操作第三列的數據 get myLists # 獲取列表數據字典類型的定義和操作方法如下:
set myRecord to {name:"exchen", blog:"http://www.exchen.net", body:"hehe"} # 定義 Record 數據 set value to the body of myRecord # 從 Record 中獲取 body 數據給 value get value三、條件語句
既然是腳本語言,當然不能少了 if 和 else 語句,使用方法如下:
set num to 123 if num = 123 thendisplay dialog "等于 123"else if strToNum > 456 thendisplay dialog "大于 456"elsedisplay dialog "不等于 123 也不大于 456" end if通過 contains 方法來進行字符串的比較判斷:
set domainName to "www.exchen.net" if domainName contains "exchen" thendisplay dialog "包含 exchen" elsedisplay dialog "不包含 exchen" end if四、循環
循環的寫法有好幾種,不過都是使用 repeat … end repeat,比如循環 100 次可以這樣寫:
set num to 10 repeat 100 timesset num to num + 1 end repeatget num類似于 for 循環,就這樣寫:
set num to 5 repeat with counter from 0 to num by 1display dialog counter end repeat類似于 while 循環,可以這樣寫:
set num to 0 repeat until num ≥ 10display dialog numset num to num + 3 end repeat五、函數
如果某些功能有重用性,應該要寫成函數,AppleScript 也支持定義函數,定義和使用方法如下:
on testFun()set num to 1 end testFuntestFun()函數當然會有返回值,通過 return 返回值:
on testFun()set num to 1return num end testFunset ret to testFun() get ret另外函數可能還會帶參數,帶參數的方法使用如下:
on testFun(str)display dialog strend testFuntestFun("exchen")函數有可能會帶多個參數,使用方法如下:
on testFun(str1, str2)display dialog str1display dialog str2end testFuntestFun("exchen", "hehe")六、用戶交互對話框
在前面我們使用過 display dialog 彈出對話框,如果要指定標題通過 with title 關鍵字,代碼如下:
display dialog "這是內容" with title "這是標題"指定按鈕的內容,可以通過 buttons {“No”, “Yes”},按鈕個數最多三個,代碼如下:
display dialog "這是內容" with title "這是標題" buttons {"No", "Yes"}也可以通過 default button 設置默認選擇的按鈕,代碼如下:
display dialog "這是內容" with title "這是標題" buttons {"No", "Yes"} default button "Yes"還可以指定對話框的圖標,icon 圖標可以指定 note/stop/caution 類型,或者指向文件路徑,代碼如下:
display dialog "這是內容" with title "這是標題" buttons {"No", "Yes"} default button "Yes" with icon note對話框一般是用于和用戶進行交互,通過 button returned 可以獲取用戶點擊了哪個按鈕,然后進行相應用操作,代碼如下:
display dialog "這是內容" with title "這是標題" buttons {"No", "Yes"} default button "Yes" if button returned of result = "Yes" thenelse if button returned of result = "No" thenend if對話框中也可以帶輸入框,讓用戶進行輸入內容,代碼如下:
display dialog "請輸入內容:" default answer ""帶輸入框的對話框的效果如下圖:
輸入內容之后,通過 text returned 來獲取輸入框的內容:
display dialog "請輸入內容:" default answer "" if text returned of result = "exchen" thenget "exchen.net" end if七、使用詞典
在第一節我們知道了如何在其他程序中執行任務,比如讓瀏覽器打開 URL、清空回收站,如果還想執行其他額外更多的功能怎么辦?去哪兒查相應的方法名稱?
可以通過詞典來找相應的方法名稱,將應用直接拖到 Dock 上的腳本編輯器圖標,然后就會顯示擴展的詞典,在這里可以查看該應用支持的相應方法名稱說明,比如 Chrome 的詞典如下圖所示:
有些應用沒有功能擴展的詞典,就會提示打開詞典失敗,如下圖所示:
八、操作其他程序的界面
本小節我們來試一下操作其他程序來實現簡單的自動化,打開計算器,使用 entire contents 顯示出 UI 信息,代碼如下:
tell application "System Events"tell process "Calculator"entire contentsend tell end tell返回 UI 信息如下:
{window 1 of application process "Calculator" of application "System Events", group 1 of window 1 of application process "Calculator" of application "System Events", static text "0" of group 1 of window 1 of application process "Calculator" of application "System Events", group 2 of window 1 of application process "Calculator" of application "System Events", button 1 of group 2 of window 1 of application process "Calculator" of application "System Events", button 2 of group 2 of window 1 of application process "Calculator" of application "System Events", button 3 of group 2 of window 1 of application process "Calculator" of application "System Events", button 4 of group 2 of window 1 of application process "Calculator" of application "System Events", button 5 of group 2 of window 1 of application process "Calculator" of application "System Events", button 6 of group 2 of window 1 of application process "Calculator" of application "System Events", button 7 of group 2 of window 1 of application process "Calculator" of application "System Events", button 8 of group 2 of window 1 of application process "Calculator" of application "System Events", button 9 of group 2 of window 1 of application process "Calculator" of application "System Events", button 10 of group 2 of window 1 of application process "Calculator" of application "System Events", button 11 of group 2 of window 1 of application process "Calculator" of application "System Events", button 12 of group 2 of window 1 of application process "Calculator" of application "System Events", ......column 2 of table 1 of menu item 1 of menu "幫助" of menu bar item "幫助" of menu bar 1 of application process "Calculator" of application "System Events", menu item "計算器幫助" of menu "幫助" of menu bar item "幫助" of menu bar 1 of application process "Calculator" of application "System Events"}比如我們關心的是按鈕 9,信息比較多,一時看不出我們所關心的按鈕,可以通過 Xcode 自帶的工具 Accessibility Inspector 查看 UI 信息,打開 Xcode 菜單,在 Open Developer Tool 里可以找到它,打開之后點擊捕獲按鈕,找到我們關心的按鈕,效果如下圖所示:
在 Accessibility Inspector 界面往下拉,可以看到按鈕 9 是在第二組的第四個,所圖所示:
從返回的 UI 信息里可以找到按鈕信息:
button 4 of group 2 of window 1 of application process "Calculator"編寫代碼實現點擊按鈕:
tell application "System Events"tell process "Calculator"entire contentsclick button 7 of group 2 of window 1end tell end tell如果想點擊菜單,在 UI 返回信息里你關心的菜單,編寫代碼如下:
tell application "System Events"tell process "Calculator"click menu item "關于計算器" of menu "計算器" of menu bar item "計算器" of menu bar 1end tell end tell執行之后,就相當于點擊了 “關于計算器” 菜單,如下圖所示:
九、運行參數
在第一節,我們知道通過 /usr/bin/osascript 能夠執行腳本,如果腳本在啟動的時候需要參數怎么辦?通過 on run 定義好參數,代碼如下:
on run {parameter1, parameter2}display dialog parameter1 end run然后在命令行執行的時候,后面跟參數執行就行了,命令如下:
/usr/bin/osascript test1.scpt "exchen.net" "parameter2"原文地址:http://www.exchen.net/applescript-%e5%bf%ab%e9%80%9f%e5%85%a5%e9%97%a8.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的AppleScript 快速入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决 LLVM 错误提示 may onl
- 下一篇: The document “Main.s