基础语法
AppleScript 入门
一、这部分介绍注释,发出声音,弹窗

(1)简单入门

 <1>多行注释
(*
this is multi
comment
*)
<2>发出响声beep 3
(2)#表示使用"Daniel"(英国发音)发出声音,人员选择如下图1所示say "Hello,world" using "Daniel" --或用"--"也可以表示> 单行注释
图1<br>(3)弹窗
display alert "This is an alert" #弹窗示例

二、变量赋值,string和number类型,字符串连接

set varName3 to true                      #设置布尔值
set varName1 to "This is a string.And I love"   #这是字符串值变量
set varName2 to "12"                      #设置数字变量把双引号去掉即可
set x to varName2 as number                   #转换整形字符串为整形
set y to 2
set z to varName2 * y                     --乘法运算
display dialog z                      --把乘积以弹窗的方式展示,结果为24
--字符串连接展示
set myCountry to " China."
say varName1 & myCountry                  #把连接后的句子读出来

三、列表操作
(1)列表常用操作,获取列表长度,列表元素赋值

set varName to {"A1", "B2", "C3"}
set varName2 to {"D4", "F5", "G6"}
set item 1 of varName to "arun"               #赋值varName列表的"A1"(第1个)为"arun"
set item -3 of varName2 to "arunyang.com"         #赋值varName2列表的"D4"(倒数第3个)为"arunyang.com"
set anotherVarName to varName & varName2
#set anotherVarName to items 2 through 2 of varName2      #items 2 through 2 of 即取值范围(表示从2元素开始,到第2个元素结束),这里为"B2"
set randomValue to some item of anotherVarName        #获取anotherVarName列表里的随机值
set lengthOfList to length of varName             #表示varName列表的长度
say randomValue                       #说出anotherVarName列表里的随机值
say lengthOfList                      #说出varName列表的长度
return anotherVarName
#返回=> {"arun", "B2", "C3", "arunyang.com", "F5", "G6"}

补充:

set myList to {"a", "b", "c", "d", "e", "f"}
set shortList to items 2 through 5 of myList   #返回=>{"b", "c", "d", "e"}(2)列表整形元素合并操作
>set numberVar to 2 as list
set numberVar2 to 4 as list
set numberVar3 to 5 as list
return numberVar & numberVar2 & numberVar3  #合并列表
#返回==>  {2, 4, 5}

(3)列表字符串元素合并操作

set StringVar to "String" as list
set listVar to {"Tacos"}
set StringVar2 to "arun"
return listVar & StringVar & StringVar2   #合并字符串列表
#返回=> {"Tacos", "String", "arun"}

(4)列表之间的合并

set list1 to {1}
set list2 to {2}
set list3 to list1 & list2
set list4 to {"", ""}
set reandom1 to some item of list4
#return list3               #返回=>{1, 2}
return reandom1               #返回=>""

四、获取用户输入
(1)弹窗按钮

set varName to display dialog "Choose an option" buttons {"option1", "option2"}    #如下图1
set varName1 to display dialog "Choose an option" default button "OK" #设置"OK"为默认按钮并高亮,如下图2
set buttonReturned to button returned of varName #返回=>选择的按钮,这里我选"option1"



(2)输入框

set varName to display dialog "Enter some text" default answer "" buttons {"button1", "button2", "button3"} default button "button3"   #弹出输入框,如下图1所示
#set varName1 to display dialog "Enter some text" default answer "Some default Input text"  #设置弹出输入框的默认输入内容
set stringReturned to text returned of varName
get stringReturned      


五、if条件语句

/=等同于≠

set var1 to 1
set var2 to 2
#if var1 ≠ var2 then    #等于=,不等于/=,小于<,大于>,大于等于>=,小于等于<=
#if var1 is equal to var2 then   #等于=
#if var1 is not equal to var2 then  #不等于
#if var1 is not less than var2 then  #不小于,即大于等于>=
set var3 to 3
set var4 to 4
#if var1 = var2 then #也可以改成or,后面可以接多个and或or语句
if var1 = var2 thendisplay alert "Var1 is equal to var2"
else if var3 = var4 thendisplay alert "var3 is equal var4!"
elsedisplay alert "Nothing returned true"
end if


六、for循环

(1)重复固定次数

repeat 3 timessay "This is an action!"
end repeat

(2)

set condition to false
repeat until condition is truesay "This is an action"       #触发了一次说的动作,下次condition为true了,所以不会执行了set condition to true         #设置condition为true,这个是结束repeat的条件
end repeat

(3)

set condition to 0
repeat until condition = 3    #condition = 3 是退出条件say "This is an action"    #会重复3次set condition to condition + 1
end repeat
#Result返回3

七、Try and catch

set condition to false
repeat until condition is truetryset age to display dialog "Enter your age" default answer "Age here"set age to text returned of age as numberset condition to true                           #只要输入的是number,这个代码块没有任何error,就会结束循环on error                                     #假如输入的是非number,就会报错,这里捕获错误,beepdisplay alert "You must enter a number"set condition to false                          #设置condition为false就会进入下一个循环,直到condition为trueend try
end repeat
display alert "Everything worked!"

八、函数和变量范围
(1)函数示例

on functionName(param1, param2)set var to param2 + 10display dialog param1 & " " & var
end functionName
functionName("A different string", 43)   #调用函数,如下图1所示


(2)

<1>函数内的变量为本地变量,函数外的变量为外部变量,两个变量互相隔离,都不能互相引用

<2>要想互相引用需要变成全局变量,即变量前加上global关键字

set var1 to "This is a variable!"         
#var为external variable即外部变量
on function()tryset var to "Inner variable"   #var1为本地变量(local variable)display dialog var           #函数内不能访问外部变量var1,否则会报错"变量没有定义".如图1所示on errorbeepglobal var1            end try
end function
function()
set var to "Potato pie"
display dialog var                  #如图2所示
display dialog var1                 #如图3所示



九、可以通过词典来找相应的方法名称,将应用直接拖到 Dock 上的脚本编辑器图标,然后就会显示扩展的词典(如下图1),在这里可以查看该应用支持的相应方法名称说明,比如Iterm2的词典如下图2所示:

十、使用脚本示例
(1)清空mac回收站

tell application "Finder"         #调用Finder程序empty the trash           #去清空回收站里面的垃圾
end tell                          #结束调用程序

(2)列出所选文件夹中所有的文件夹名称

set folderSelected to choose folder "Select a folder"
tell application "Finder"set listOfFolders to every folder of folderSelected
end tell
set theList to {}
repeat with aFolder in listOfFoldersset temp to the name of aFolderset theList to theList & temp
end repeat

(3)用chrome浏览器打开指定网址

set myBlog to "http://www.arunyang.com"#告诉 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

(4)ssh快速登录

-- Launch iTerm and log into multiple servers using SSH
tell application "iTerm"activatecreate window with default profile-- Read serverlist from file path belowset Servers to paragraphs of (do shell script "/bin/cat /opt/applescript/serverlist")repeat with nextLine in Servers-- If line in file is not empty (blank line) do the restif length of nextLine is greater than 0 then-- set server to "nextLine"-- set term to (current terminal)-- set term to (make new terminal)-- Open a new tab-- tell termtell current windowcreate tab with default profiletell current sessionwrite text "ssh-custom " & nextLine-- sleep to prevent errors if we spawn too fastdo shell script "/bin/sleep 0.01"end tellend tellend ifend repeat-- Close the first tab since we do not need it-- terminate the first session of the current terminaltell first tab of current windowcloseend tell
end tell

(5)多屏登录

#! /usr/bin/osascript
-- List actions to perform
set Servers to paragraphs of (do shell script "/bin/cat /opt/applescript/serverlist")
-- Count number of Servers
--set num_actions to count of actions
set num_actions to count of Servers-- Set cols and lines
set num_cols to round (num_actions ^ 0.5)
set num_lines to round (num_actions / num_cols) rounding up-- Start iTerm
tell application "iTerm"activate# Create new tabtell current windowcreate tab with default profileend tell-- Prepare horizontal panesrepeat with i from 1 to num_linestell session 1 of current tab of current windowif i < num_lines thensplit horizontally with default profileend ifend tellend repeat-- Prepare vertical panesset sessid to 1repeat with i from 1 to num_linesif i is not 1 then set sessid to sessid + num_colsif i is not num_lines or num_actions is num_cols * num_lines thenset cols to num_cols - 1elseset cols to (num_actions - ((num_lines - 1) * num_cols)) - 1end ifrepeat with j from 1 to (cols)tell session sessid of current tab of current windowsplit vertically with default profileend tellend repeatend repeat-- Execute actionsrepeat with i from 1 to num_actionstell session i of current tab of current windowset Server to item i of Serversif length of Server is greater than 0 thenwrite text "ssh-ele " & Serverdo shell script "/bin/sleep 0.01"end ifend tellend repeat
end tell

AppleScript快速入门教程相关推荐

  1. BIML 101 - ETL数据清洗 系列 - BIML 快速入门教程 - 序

    BIML 101 - BIML 快速入门教程 做大数据的项目,最花时间的就是数据清洗. 没有一个相对可靠的数据,数据分析就是无木之舟,无水之源. 如果你已经进了ETL这个坑,而且预算有限,并且有大量的 ...

  2. ​HealthKit开发快速入门教程大学霸内部教程

    ​HealthKit开发快速入门教程大学霸内部教程 ​ ​ 国内第一本HealthKit专向教程.本教程详细讲解iOS中,如何使用HealthKit框架开发健康应用.最后,本教程结合HealthKit ...

  3. Apple Watch开发快速入门教程

     Apple Watch开发快速入门教程  试读下载地址:http://pan.baidu.com/s/1eQ8JdR0 介绍:苹果为Watch提供全新的开发框架WatchKit.本教程是国内第一本A ...

  4. 指示灯组与3个复位按钮的介绍Arduino Yun快速入门教程

    指示灯组与3个复位按钮的介绍Arduino Yun快速入门教程 ​1.4.2  指示灯组 指示灯组的放大图如图1.5所示. 图1.5  指示灯组 各个指示灯对应的功能如下: q  RX:对应于0号端口 ...

  5. 游戏控制杆OUYA游戏开发快速入门教程

    游戏控制杆OUYA游戏开发快速入门教程 1.2.2  游戏控制杆 游戏控制杆各个角度的视图,如图1-4所示,它的硬件规格是本文选自OUYA游戏开发快速入门教程大学霸: 图1-4  游戏控制杆各个角度的 ...

  6. Arduino Yun的主要部件介绍选自Arduino Yun快速入门教程

    Arduino Yun的主要部件介绍 1.4.1  主要部件 Yun的主要部件如图1.4所示. 图1.4  Arduino Yun的主要部件 在Yun小小的板子上集成了两颗处理器.一个是ATmega3 ...

  7. 认识AndEngine选自Android 2D游戏引擎AndEngine快速入门教程

    认识AndEngine什么是AndEngine 随着Android手机.平板的盛行,Android下的游戏也不断的变得火热.而对于游戏开发有兴趣的同学们,应该也想要学习开发游戏.虽说游戏开发的引擎较多 ...

  8. OUYA游戏开发快速入门教程1.2OUYA的硬件规格

    OUYA游戏开发快速入门教程1.2OUYA的硬件规格 从官网上购买回来的OUYA产品,包含游戏主机.游戏控制杆.说明书.电源线.HDMI线.电源线和电池,如图1-2所示.本节就来简要介绍下,游戏主机和 ...

  9. Android 2D游戏引擎AndEngine快速入门教程

    Android 2D游戏引擎AndEngine快速入门教程 介绍:AndEngine是一款知名的Android 2D游戏引擎.该引擎代码开源,并且可以免费使用.本书详细讲解如何使用AndEngine引 ...

最新文章

  1. solr索引服务器的配置和solrj集成开发总结
  2. linux点阵ascii像素字体,点阵字体显示系列之一:ASCII码字库的显示 | 迟思堂工作室...
  3. linux时间配置文件,linux系统下的时间配置综述
  4. unit类型是什么?_项目中有用过锁吗?能解释一下什么是AQS(AbstractQueuedSynchronizer)吗?...
  5. 高级程序员如何面对职场压力?(2)--受伤的总是我
  6. Flink 流批一体的实践与探索
  7. mybatis源码深度解析_30天消化MyBatis源码解析笔记,吊打面试官,offer接到手软
  8. Ajax请求数据与删除数据后刷新页面
  9. ux设计师薪水_我是如何从33岁的博物馆导游变成专业的Web开发人员和UX设计师的:我的…...
  10. 解决安装SQL Server 2000提示文件挂起的一般方法
  11. MongoDB 固定集合详解
  12. C语言图书查询号系统,C语言图书查询系统.doc
  13. JAVA方法重载优先级
  14. kali Linux 上编译并使用RFID核弹——proxmark3
  15. Android Thermal
  16. 系统—怎么关闭windows自带的安全中心
  17. 分治法解乒乓球比赛日程安排问题
  18. 【Computer Organization笔记08】指令系统概述,指令格式,寻址方式
  19. Python实现psf2otf
  20. Arduino 学习思考与记录

热门文章

  1. java界面化二叉排序树_层次序创建二叉树(图形界面和控制台输入实现)
  2. 麦克劳林展开式_数学家麦克劳林与牛顿的故事
  3. 现在mfc的现状如何_天玑云客:微信代运营现在什么现状?如何挑选合适的代运营公司?...
  4. python控制灯_Python 控制树莓派 GPIO 输出:控制 LED 灯
  5. oracle 增加间隔分区,oracle分区表之间隔分区(oracle 11g) - 漫兮网
  6. 一维有限元法matlab,有限元matlab研究.ppt
  7. 单硬盘上mac + win7双系统,GUID-GPT分区
  8. [python] list元素按关键字相加减
  9. 图片不显示问题 图片url监测改变问题
  10. 2016matlab安装