AppleScript的字典怎么看怎么用


新迭代之前忙里偷閑摸魚了幾種腳本的寫法:bash, alfred,automator,applescript

這篇就說說這個applescript

以iterm為例
初看它的字典大概長這樣:

 


1、方法包
它有兩個suite也就是兩個方法包
第一個看名字就知道是一個標准包,這個系統自動加的,給每一個應用程序會自動生成一個這樣的方法包,里面的方法很多是一樣的,但是有的細節有區別:

 

 
第二個方法包就是軟件自己提供的方法包了

 

這里上面淺藍色的是方法,紫色的是類,類可以有自己的方法,下面分別講
 

2、方法

 

  1. 其實這里的方法有一點消息的意思,跟OC有點像
  2. 第一行
    1. 先是方法名split vertically(用豎直線切割)
    2. 然后v的意思就是動詞,類似方法的意思
    3. 然后接着是對這個方法的描述
  3. 第二行開始是這個消息的發送格式
    1. 先是主消息名
    2. 后邊接一個specifier類型的參數(有的時候不用傳參數)
      1. 這個specifier類型是什么在哪兒都找不到,自己領悟並且看其他各種的注釋(對,對同一個類型的描述注釋都不太一樣,像這里這個描述,根本就風馬牛不相及)並且搜索各種別人的插邊球回答並且翻看了一些別人寫的AS代碼,最后實踐試出來,這個類型的意思是:window tab session一類的東西
    3. 之后是描述
  4. 第三行以及之后就是次消息名
    1. 用中括號括起的表示可選參數,沒用的就是必選
    2. text類型就是String類型
  5. 最后一行一個箭頭加后邊,是返回值類型的意思
 

3、類

 

  1. n表示是名詞,是類
  2. 然后第一部分是包含和被包含關系 elements,類似類圖,告訴你持有和被持有的關系
  3. 第二部分是方法properties,這塊非常重要,是你要使用的
    1. 這個方法比上面的方法形式要簡單,不需要傳參數,括號里就是返回值類型,后邊接着描述
    2. 方法調用的方式是:[返回值] = [方法] of [類]
 

4、一個重要的公用類:application
說這個類重要是因為在我實際操作中發現它非常重要
它是程序開啟(也就是被tell之后就自動生成的類),然后很多方法都需要傳入這個參數,可以說他是一切操作的開始
 
通過這個類的方法能獲取到一些重要的系統常量:當前應用的窗口、可見性、大小等等數據
 
在使用Iterm的時候我最覺得重要的是就是返回當前的窗口了,從窗口中才能拿session,拿到session才能干后邊所有的活
 

5、舉例
以一段對iterm操作的代碼為例具體解釋一下使用時的技巧
這段代碼實現的效果是:按照我的需求打開我的iterm,切分窗口,使用不同的配置文件,分別進入某個路徑
 
tell application "iTerm"


set session1 to (current session of current window)
write session1 text "cd ~/AndroidStudioProjects/HqyxEduStudentAndroid"

set session2 to (split vertically session1 with profile "Teacher")
write session2 text "cd ~/AndroidStudioProjects/Tea"

set session3 to (split horizontally session1 with profile "Common")
write session3 text "cd ~/AndroidStudioProjects/SharedLibrary"

split horizontally session2 with profile "MyProfile"

end tell
split vertically session1 with profile "Teacher" command "cd ~/AndroidStudioProjects/Tea"
  1. 在講之前先科普一下自己在探索過程中發現的這個iterm里的幾個概念
    1. window,這個是所有app共通的,就是整個程序窗口
    2. tab,這里沒有出現使用,指的是一個個tab頁面
    3. session,是會話的意思,這里值的是一個個小窗口,或者感覺是一個個小進程
  2. 然后下一段是兩句話
    1. 第一句:先是括號內通過application類的類方法獲取當前的窗口(因為是元類,所以可以直接調方法),然后通過這個窗口的方法獲取當前的session,並且把這個session進行賦值
    2. 第二個句是給這個session的窗口中運行命令
    3. 注意,這個session是默認創建的,我們都控制不了
  3. 下一段還是兩句話
    1. 先是括號內,這句號本身就是一個方法調用,在session1上切分一個新的窗口,並且使用teacher的配置文件來配置,這句話會返回新創建的session,然后把這個session記錄下來並且賦值
    2. 第二句就是跟上面一樣了
    3. 非常值得一提的是,第一句括號里的方法本來是還有一個command參數的,使用這個參數的話兩句話可以合並為一句話(表格中第二行),但是非常遺憾的是,它會莫名奇妙報錯,所以只能放棄這種寫法
  4. 后邊幾段就都是一樣了
 

總結一些常用知識(非常主觀):
  1. 資料非常少,可以看到用的人非常少,需要自己探索
  2. 居然有兩本書的資料可以方便下到,但是這兩本書里能給的幫助真是不多
  3. 用過的人都說不好,確實是正在沒落的語言
  4. 會莫名奇妙崩潰,探索能曲線救國的方法
  5. 線程迷之不安全,最好寫得線程健壯
 
總結一些習慣用法:
  1. 獲取當前窗口
  2. 調用對象的屬性方法
  3. 賦值方法
  4. 可以使用小括號進行優先執行
  5. 判斷某個應用是否開啟
  6. if else
  7. 延時:delay 1(延時1S后繼續執行)
  8. 打印結果:say “string” (直接發聲進行打印)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM