AppleScript 基础(二)流程语句和常用语句

2018-11-26  本文已影响0人  河码匠

基础一回顾

AppleScript 基础一(基本语法和数据类型)中介绍了 AppleScript 常用的5种变量类型。并详细介绍了一些类型的相关操作。

  1. 字符串的一些常用操作,如:字符串连接&、切割字符串... to every character of ...、字符串的比较运算符等;
  2. 列表的一些常用操作,如:获取列表内元素个数set ... to the length/count of...、获取指定范围的数据set ... to items .. through .. of ...、将列表元素组成字符串等;
  3. 记录的常用方法,如:获取长度、修改内容、获取记录的值等;

本次将介绍 AppleScript 的一些基本语句和常用的方法(比如: tell application)。

一、基本语句

  1. 条件语句
  2. 循环(官方叫重复)
  3. 错误处理
  4. 函数(官方叫处理程序)

1. 条件语句

条件语句一般有三种用法

  1. 如果...
  if true then
      -- 操作流程
  end if
  1. 如果...否则...
  if ... then
      -- 操作流程
  else
      -- 操作流程
  end if
  1. 如果...否则如果...否则...
  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;

  1. 基本用法如下:
  repeat 2 items
      beep
  end repeat
  1. 配合 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
  1. 配合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
  1. 配合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
  1. 在重复中做延迟delay(单位秒)
-- 无限循环 每两秒嘟一声
repeat while true
    delay 2
    beep
end repeat

3. 错误处理

  1. 为了避免程序出现错误后被强行结束。比如说让用户输入一个数字做一个平方的计算,在计算式需要把用户输入的内容转换为数组,如果用户输入的是字母那么程序崩溃。请看下面的例子:
  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
  1. 如果你想看到系统报错信息而不是自己定义的使用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.函数(操作流程)

  1. 定义一个函数如下:
  on myFunc()
    beep
  end myFunc
  myFunc()
  1. 当然传参也是可以的;如下:
  on myFunc(repeatCount)
    repeat repeatCount times
        beep
    end repeat
  end myFunc
  myFunc(3)
  1. 返回值的时候使用return就可以
  on addition(a, b)
    return a + b
  end addition
  set res to addition(2, 4)
  get res
  >>> 6
  1. 函数内和函数外的变量是没有冲突的:
  set a to 10
  on myFunc()
    set a to 1
  end myFunc
  myFunc()
  get a
  >>> 10
  1. \color{red}{注意}:在 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"

此时看到记录中有两个值

  1. text returned为用户输入内容。
  2. button returned为用户点击按钮所获取的值
    \color{red}{注意}:用户输入的所有内容均以字符串的形式返回。如上面例子中的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 可以看到按钮啦~

CC891B28-E543-4A4F-A3C7-954B38D4CBB2.png
还有啊~按钮可以设置默认。在 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的用法

  1. 最常见的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 获取昨天其他同事的提交,如果没有冲突启动项目。

上一篇下一篇

猜你喜欢

热点阅读