我有applecript,它会显示菜单列表并允许用户选择菜单项等。 它本身运行良好。现在我尝试在python中运行它。我得到了允许的无用户交互。 (-1713)错误。
我在网上看了一下。我尝试了以下方法:在同一个AppleScript中添加运行功能,所以我所做的只是将主要内容添加到运行中
跑步 告诉应用程序“AppleScript Runner” 主要() 结束告诉 结束
我试图在python中运行上面的内容 进口口 def main(): os.system('osascript -e“告诉应用程序”ApplesScript Runner“做脚本/Users/eee/applescript/iTune.scpt告诉”')
如果名称 =='主要': 主要() 两种方式都不奏效。谁能告诉我如何正确地做到这一点?
答案 0 :(得分:10)
这是一个常见的错误。当您使用OSAScript从shell运行脚本时,您必须告诉应用程序显示任何“显示对话框”或“选择列表对话框”或任何需要用户交互的内容。 OSAScript无法显示它们,所以告诉像Finder这样的应用程序来显示它们。使用这样的代码......
tell application "Finder"
activate
display dialog "Now it works!"
end tell
或者从命令行通知这不起作用......
osascript -e 'display dialog "Now it will not work."'
但是这会有效,因为我们告诉Finder这样做......
osascript -e 'tell application "Finder"' -e 'activate' -e 'display dialog "Now it works!"' -e 'end tell'
所以底线是你在iTune.scpt的某个地方显示一个对话框。在该脚本中,只需告诉iTunes或Finder显示它们。
答案 1 :(得分:0)
我的问题是设置了LSBackgroundOnly = YES
的应用程序试图运行显示UI的AppleScript,例如display dialog ...
Error Domain = NSPOSIXErrorDomain代码= 2“没有这样的文件或目录”
AppleScript.scpt:执行错误:不允许用户交互。 (-1713)
如其他答案所示,使用tell application "Finder" ...
等有效。
或者,删除LSBackgroundOnly
键以启用UI AppleScript,而无需告知其他应用程序。
LSUIElement
呈现了类似的模式-没有停靠图标,没有菜单栏等-但确实允许启动UI AppleScripts。