AppleScript 快速入門

來源:互聯網
上載者:User

標籤:代碼   簡單   upload   直接   文法   字串   dev   執行   ecc   

AppleScript 快速入門

AppleScript 顧名思義是蘋果開發的一套指令碼語言,利用 AppleScript 在 macOS 系統上可以對其他程式進行操作,點擊按鈕、發送訊息、類比自動化執行功能,比如可以開啟瀏覽器,清空資源回收筒等等一些操作,是一個非常有意思的指令碼。說好了要快速入門,下面我們開始快速學習瞭解它吧。

一、讓其他程式執行任務

在 macOS 上有一個應用叫指令碼編輯器,通過 Launchpad 可以搜尋到,開啟指令碼編輯器之後,可以看到支援編寫和解析 AppleScript 和 JavaScript 兩種指令碼,如所示:

AppleScript 的文法和平時的英語文法很類似,你想讓哪個程式執行操作,就 tell 它,比如你想讓 Finder 清空資源回收筒那就這樣寫:

tell application "Finder"    empty the trashend tell

在指令碼編輯器上點擊運行按鈕就可以看到資源回收筒的內容被清空了,或者按快速鍵 Command + R 也能運行,運行之前記得資源回收筒得有東西,不然可能會執行失敗。

如果你想讓系統說話,可以這樣寫:

tell application "Finder"    say "My name is exchen"end tell

哈哈,記得把電腦的聲音開啟,是不是聽到說話了?不僅支援英文和中文,其他國家語言,像德語、荷蘭語筆者試過,同樣也可以。

如果你想讓瀏覽器開啟 URL,可以這樣寫:

set myBlog to "http://www.exchen.net"# 告訴 Chrmoe 瀏覽器開啟 URLtell application "Google Chrome"    # 建立一個 chrome 視窗    set window1 to make new window    tell window1        set currTab to active tab of window1        set URL of currTab to myBlog    end tellend 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 賦值給 num3set 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 str3set numToStr to num1 as stringset 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 資料給 valueget value
三、條件陳述式

既然是指令碼語言,當然不能少了 if 和 else 語句,使用方法如下:

set num to 123if num = 123 then    display dialog "等於 123"else if strToNum > 456 then    display dialog "大於 456"else    display dialog "不等於 123 也不大於 456"end if

通過 contains 方法來進行字串的比較判斷:

set domainName to "www.exchen.net"if domainName contains "exchen" then    display dialog "包含 exchen"else    display dialog "不包含 exchen"end if
四、迴圈

迴圈的寫法有好幾種,不過都是使用 repeat … end repeat,比如迴圈 100 次可以這樣寫:

set num to 10repeat 100 times    set num to num + 1end repeatget num

類似於 for 迴圈,就這樣寫:

set num to 5repeat with counter from 0 to num by 1    display dialog counterend repeat

類似於 while 迴圈,可以這樣寫:

set num to 0repeat until num ≥ 10    display dialog num    set num to num + 3end repeat
五、函數

如果某些功能有重用性,應該要寫成函數,AppleScript 也支援定義函數,定義和使用方法如下:

on testFun()    set num to 1end testFuntestFun()

函數當然會有傳回值,通過 return 傳回值:

on testFun()    set num to 1    return numend testFunset ret to testFun()get ret

另外函數可能還會帶參數,帶參數的方法使用如下:

on testFun(str)    display dialog strend testFuntestFun("exchen")

函數有可能會帶多個參數,使用方法如下:

on testFun(str1, str2)    display dialog str1    display 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" then    get "exchen.net"end if
七、使用詞典

在第一節我們知道了如何在其他程式中執行任務,比如讓瀏覽器開啟 URL、清空資源回收筒,如果還想執行其他額外更多的功能怎麼辦?去哪兒查相應的方法名稱?

可以通過詞典來找相應的方法名稱,將應用直接拖到 Dock 上的指令碼編輯器表徵圖,然後就會顯示擴充的詞典,在這裡可以查看該應用支援的相應方法名稱說明,比如 Chrome 的詞典如所示:

有些應用沒有功能擴充的詞典,就會提示開啟詞典失敗,如所示:

八、操作其他程式的介面

本小節我們來試一下操作其他程式來實現簡單的自動化,開啟計算機,使用 entire contents 顯示出 UI 資訊,代碼如下:

tell application "System Events"    tell process "Calculator"        entire contents    end tellend 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 contents        click button 7 of group 2 of window 1    end tellend tell

如果想點擊菜單,在 UI 返回資訊裡你關心的菜單,編寫代碼如下:

tell application "System Events"    tell process "Calculator"        click menu item "關於計算機" of menu "計算機" of menu bar item "計算機" of menu bar 1    end tellend tell

執行之後,就相當於點擊了 "關於計算機" 菜單,如所示:

九、運行參數

在第一節,我們知道通過 /usr/bin/osascript 能夠執行指令碼,如果指令碼在啟動的時候需要參數怎麼辦?通過 on run 定義好參數,代碼如下:

on run {parameter1, parameter2}    display dialog parameter1end run

然後在命令列執行的時候,後面跟參數執行就行了,命令如下:

/usr/bin/osascript test1.scpt "exchen.net" "parameter2"

原文地址:http://www.exchen.net/applescript-快速入門.html

AppleScript 快速入門

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.