AppleScript的字典怎么看怎么用

新迭代以前忙里偷闲摸鱼了几种脚本的写法:bash, alfred,automator,applescript安全

这篇就说说这个applescriptbash

以iterm为例
初看它的字典大概长这样:

 


一、方法包
它有两个suite也就是两个方法包
第一个看名字就知道是一个标准包,这个系统自动加的,给每个应用程序会自动生成一个这样的方法包,里面的方法不少是同样的,可是有的细节有区别:

 

 
第二个方法包就是软件本身提供的方法包了

 

这里上面浅蓝色的是方法,紫色的是类,类能够有本身的方法,下面分别讲
 

二、方法

 

  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. 最后一行一个箭头加后边,是返回值类型的意思
 

三、类

 

  1. n表示是名词,是类
  2. 而后第一部分是包含和被包含关系 elements,相似类图,告诉你持有和被持有的关系
  3. 第二部分是方法properties,这块很是重要,是你要使用的
    1. 这个方法比上面的方法形式要简单,不须要传参数,括号里就是返回值类型,后边接着描述
    2. 方法调用的方式是:[返回值] = [方法] of [类]
 

四、一个重要的公用类:application
说这个类重要是由于在我实际操做中发现它很是重要
它是程序开启(也就是被tell以后就自动生成的类),而后不少方法都须要传入这个参数,能够说他是一切操做的开始
 
经过这个类的方法能获取到一些重要的系统常量:当前应用的窗口、可见性、大小等等数据
 
在使用Iterm的时候我最以为重要的是就是返回当前的窗口了,从窗口中才能拿session,拿到session才能干后边全部的活
 

五、举例
以一段对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” (直接发声进行打印)
相关文章
相关标签/搜索