我有一个简单的苹果脚本如下:
tell application id "com.adobe.InDesign"
set sel to selection
end tell
此脚本执行正常,但当InDesign显示保存确认对话框时,如果我执行脚本,则等待2分钟(默认苹果脚本超时)。
保存确认对话框
因此我指定超时如下:
tell application id "com.adobe.InDesign"
with timeout of 0.2 seconds
set sel to selection
end timeout
end tell
现在,如果我在 AppleScript编辑器中执行上述脚本,那么每件事都符合我的预期:
但是当我通过 NSAppleScript 以编程方式执行相同的脚本时,超时没有效果,程序等待2分钟:
NSDictionary *errorDict;
NSString *script =
@"tell application id \"com.adobe.InDesign\"\n"
@" with timeout of 0.2 second\n"
@" set sel to selection\n"
@" end timeout\n"
@"end tell\n"
;
NSAppleScript* scr = [[NSAppleScript alloc] initWithSource: script];
[scr executeAndReturnError: &errorDict];
附加说明:
当我的可可代码正在执行时(当我的应用程序被阻止时)如果我在 AppleScript编辑器中执行相同的脚本,那么我的可可代码会在超时2分钟之前解锁。似乎我的应用程序在Apple脚本超时行之前被阻止[?]
如何执行与 AppleScript编辑器相同的苹果脚本?
任何帮助将不胜感激。
答案 0 :(得分:1)
构建脚本并另存为应用程序应解决此问题。它应该是相同的脚本,但只需在脚本的开头和结尾添加on run
和end run
。这样做的方法是当你去保存时,在保存菜单的底部,应该有一个文件格式下拉列表。选择“应用程序”选项并保存。
我注意到这会使“默认的Applescript超时”无效。