AppleScript 基础(二)流程语句和常用语句
2018-11-26 本文已影响0人
河码匠
基础一回顾
在AppleScript 基础一(基本语法和数据类型)中介绍了 AppleScript 常用的5种变量类型。并详细介绍了一些类型的相关操作。
- 字符串的一些常用操作,如:字符串连接
&
、切割字符串... to every character of ...
、字符串的比较运算符等;- 列表的一些常用操作,如:获取列表内元素个数
set ... to the length/count of...
、获取指定范围的数据set ... to items .. through .. of ...
、将列表元素组成字符串等;- 记录的常用方法,如:获取长度、修改内容、获取记录的值等;
本次将介绍 AppleScript 的一些基本语句和常用的方法(比如: tell application)。
一、基本语句
- 条件语句
- 循环(官方叫重复)
- 错误处理
- 函数(官方叫处理程序)
1. 条件语句
条件语句一般有三种用法
- 如果...
if true then
-- 操作流程
end if
- 如果...否则...
if ... then
-- 操作流程
else
-- 操作流程
end if
- 如果...否则如果...否则...
if ... then
-- 操作流程
else if ... then
-- 操作流程
else -- 操作流程
end if
以上三中很常见的用法,3中的 else if ... then
可以有多层。
下面举几个例子:
set a to 20
set b to 30
if a is b then
-- 嘟的一声
beep
end if
if a is b then
-- 嘟的一声
beep
else
repeat 2 times
beep
end repeat
end if
if a is b then
-- 嘟的一声
beep
else if a is greater than b then
say (a as string) & " is greater than " & b as string
else
repeat 2 times
beep
end repeat
end if
2、循环(重复)repeat
在条件语句中已经见到了,就是 repeat
;
- 基本用法如下:
repeat 2 items
beep
end repeat
- 配合
whild
的用法
set a to false
set b to 1
-- 当a 满足等于 false 条件时执行循环
repeat while a is false
if b is 3 then
set a to true
end if
beep
set b to b + 1
end repeat
- 配合
until
的用法
set a to true
set b to 1
--当 a 不满足等于 false 时开始循环
repeat until a is false
if b is 3 then
set a to false
end if
beep
set b to b + 1
end repeat
- 配合
from a to b by c
从 a到 b次循环(闭区间[a, b]),c为步长
repeat with counter from 3 to 5
-- 嘟嘟嘟三声
beep
end repeat
repeat with counter from 1 to 5 by 2
--嘟嘟嘟三声
--1一次嘟,1+2 一次嘟,3+2一次嘟
beep
end repeat
- 在重复中做延迟
delay
(单位秒)
-- 无限循环 每两秒嘟一声
repeat while true
delay 2
beep
end repeat
3. 错误处理
- 为了避免程序出现错误后被强行结束。比如说让用户输入一个数字做一个平方的计算,在计算式需要把用户输入的内容转换为数组,如果用户输入的是字母那么程序崩溃。请看下面的例子:
set temp to display dialog "请输入您要计算平方的数字:" default answer ""
set userEntered to text returned of temp
try
set userEntered to userEntered as number
on error
display dialog "您输入的数据不是数字"
end try
- 如果你想看到系统报错信息而不是自己定义的使用
on error the errorMessage number the errorNumber
;如下
set temp to display dialog "请输入您要计算平方的数字:" default answer ""
set userEntered to text returned of temp
try
set userEntered to userEntered as number
on error the errorMessage number the errorNumber
display dialog "Error:" & errorNumber & ". " & errorMessage
end try
4.函数(操作流程)
- 定义一个函数如下:
on myFunc()
beep
end myFunc
myFunc()
- 当然传参也是可以的;如下:
on myFunc(repeatCount)
repeat repeatCount times
beep
end repeat
end myFunc
myFunc(3)
- 返回值的时候使用
return
就可以
on addition(a, b)
return a + b
end addition
set res to addition(2, 4)
get res
>>> 6
- 函数内和函数外的变量是没有冲突的:
set a to 10
on myFunc()
set a to 1
end myFunc
myFunc()
get a
>>> 10
-
:在 tell 中调用函数时需要使用
of me
on showProgress()
display dialog "Job done"
end showProgress
tell application "Finder"
showProgress() of me
end tell
二、常用的操作语句
1. 弹框display dialog ....
display dialog "哇哈哈哈"
弹框中带输入框
display dialog "随便输入" default answer ""
输入后如何获取到内容呢?继续向下看
set res to display dialog "随便输入" default answer ""
get res
>>> {button returned:"好", text returned:"123"}
set userEnterContent to text returned of res
get userEnterContent
>>> "123"
此时看到记录中有两个值
text returned
为用户输入内容。button returned
为用户点击按钮所获取的值
:用户输入的所有内容均以字符串的形式返回。如上面例子中的123就是字符串。
既然说到了按钮,那么下面就说一下怎么自定义弹框的按钮:
使用buttons
来定义按钮
set buttonList to {"OK", "Cancel", "咔咔"}
set res to display dialog "随便输入" default answer "" buttons buttonList
set buttonContent to button returned of res
get buttonContent
>>> 点什么按钮就是什么值
OK 可以看到按钮啦~
还有啊~按钮可以设置默认。在
default button
+ 数字或按钮名。如下:
set buttonList to {"OK", "Cancel", "咔咔"}
set res to display dialog "随便输入" default answer "" buttons buttonList default "Cancel"
86D68412-97AD-4193-AD97-D1D3B489D4CE.png
默认是粉嫩粉嫩的哦~
2. tell的用法
- 最常见的
tell application ...
-- 告诉 Finder
tell application "Finder"
-- 把垃圾清空
empty the trash
end tell
-- 启动 iTerm
tell application "iTerm" to activate
本章就这样了。下一章将介绍如何在 MAC下自动化启动你开发的项目以及 iTerm 相关 AppleScript语句。比如:我有一个 Python 的项目每天早上来要做的事。启动 mysql,然后 git checkout 到开发分支,然后 git pull 获取昨天其他同事的提交,如果没有冲突启动项目。