我尝试学习AppleScript。你在我的第一个雄心勃勃的项目的一部分下面看到了什么。如果您还打开了TextEdit窗口,它会被修改,以便可以在AppleScript编辑器中进行测试。
脚本的作用:
我的问题:
只有在我关闭变量时才对齐窗口。只要我将列表(selectedEditor
)中返回的变量替换为字符串tell 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
答案 0 :(得分:0)
我看到这个错误的唯一线索是:
“errAEIllegalIndex:index在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
...并且还获得了它的windows属性(tell中的第二行)。
我很抱歉,如果这对您来说很明显,并且您已经确定Marked没有此功能,但这是首先要检查的,就像我说的那样,我没有Marked。
答案 1 :(得分: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