0

我正在尝试学习 AppleScript。您在下面看到的是我第一个雄心勃勃的项目的一部分。如果您还打开了一个 TextEdit 窗口,它已被修改,以便可以在 AppleScript 编辑器中对其进行测试。

脚本的作用:

  • 从列表中选择编辑器
  • 对齐两个打开的窗口

我的问题:

仅当我关闭变量时,对齐窗口才有效。只要我用字符串替换从列表( )返回的变量, 它就可以工作。selectedEditortell process "TextEdit"

我希望有人能发现错误。

事件日志中的错误代码:

System Events got an error: Can’t make {"TextEdit"} into type integer.

这是代码:

property myEditors : {"TextEdit", "Sublime Text 2"}
set the editorList to myEditors as list

set selectedEditor to choose from list the editorList

set lngWidth to word 3 of (do shell script "defaults read /Library/Preferences/com.apple.windowserver | grep -w Width")
set lngHeight to word 3 of (do shell script "defaults read /Library/Preferences/com.apple.windowserver | grep -w Height")
set lngHalf to lngWidth / 2
set lngHeight to lngHeight - 22

tell application id "sevs"
    tell process selectedEditor to tell window 1 to set {position, size} to {{lngHalf, 22}, {lngHalf, lngHeight}}
    tell process "AppleScript Editor" to tell window 1 to set {position, size} to {{0, 22}, {lngHalf, lngHeight}}
end tell
4

2 回答 2

0

我看到这个错误的唯一线索是:

“errAEIllegalIndex:索引在 put 操作中超出范围”

我没有/拥有 Marked,所以我不知道 AppleScript 的局限性/潜力。由于您是 AppleScript 的新手,我会问您是否确定 Marked.app 不是可编写脚本的,也就是说,如果您确定它没有合适的脚本字典(根本没有)。将应用程序文件拖放到 AppleScript 脚本编辑器会告诉您这一点(它会显示应用程序的字典,或者告诉您无法读取它)。使用系统事件的唯一原因是应用程序不可编写脚本,或者以非常有限的方式编写脚本。大多数脚本能力有限的应用程序都有带有属性的窗口对象。

例如,Firefox(我现在正在使用)的脚本能力有限,并允许我设置其窗口的边界:

tell application "Firefox"
    set bounds of window 1 to {137, 22, 1345, 809}

    properties of window 1
end tell

...并获得其窗口的属性(告诉中的第二行)。

如果这对您来说很明显并且您已经确定 Marked 没有此功能,我很抱歉,但这是首先要检查的,就像我说的那样,我没有 Marked。

于 2013-07-19T18:25:41.060 回答
0

错误“系统事件出错:无法将 {"TextEdit"} 转换为整数类型。” 正在告诉你问题所在。{"TextEdit"} 是一个包含一项的列表。这就是您从“从列表中选择”语句中得到的结果。因此,将该声明更改为...

set selectedEditor to item 1 of (choose from list the editorList)

这将为您提供“TextEdit”,它是一个字符串,而不是 {“TextEdit”},它是一个列表。

此外,此语句是不必要的,因为 myEditors 已经是一个列表,如其周围的括号所证明的那样。只需在“从列表中选择”命令中直接使用 myEditors。

set the editorList to myEditors as list
于 2013-07-19T22:34:31.873 回答