macOS Mojave,Automator“未授权将 Apple 事件发送到系统事件。”

macOS Mojave, Automator “Not authorized to send Apple events to System Events.”

更新到 Mojave 后,我无法再使用以前一直使用的自动化服务,并出现以下警告。

您是否发现我的代码有任何问题,或者这是最新 macOS 的问题?

脚本

on run {input, parameters}
set pathList to {}
repeat with itemNum from 1 to count of input
    tell application "System Events"
        copy POSIX path of (container of (item itemNum of input)) to end of pathList
    end tell
end repeat
return pathList
end run

更新:更新到最新的 Public Beta(截至 2018 年 8 月 4 日)为我解决了这个问题。在此之前,该问题确实存在于 Mojave 的所有 public 测试版中。


原回复:

只是想让你知道我和另一个朋友都遇到了这个完全相同的问题,使用 Applescript 的不同 Automator 工作流程(与你的不同)。手动激活(Finder --> 服务 --> 单击项目)和键盘快捷键激活都会出现问题。

更奇怪的是,在 Automator 内部进行测试时,工作流程的表现非常出色。

我已经通过反馈助手提交了错误报告,并建议其他看到此信息的人也这样做!吱吱作响的车轮和所有...

Automator - Permissions error. "The action “Run AppleScript” encountered an error: “Not authorized to send Apple events to System Events.”"

Automator workflow performing well inside Automator

这绝对是 Mojave 新安全框架的一部分。在 terminal 尝试

osascript -e 'tell application "Finder"' -e 'set _b to bounds of window of desktop' -e 'end tell'

可能收到:

36:42: execution error: Not authorized to send Apple events to Finder. (-1743)

第一次执行时应该发生的是 Finder 打开一个对话框,通知您 terminal 正在请求向 Finder 发送事件的权限。如果您允许,那么 terminal 将被添加到 System Preferences > Security & Privacy > Automation:

中的自动化页面

我目前看到两个问题:

  • 为脚本操作请求权限的实现似乎有问题;我有 运行 其他脚本请求向 Safari 发送事件的权限,而 Finder 不提示权限,它只是 returns 一个错误。
  • 流线型自动化需要某种类型的机制来授予权限先验;一个例子是将 AppleScript 与 Ansible 一起使用并且无法预加载授权

其他人已经写了关于此的更广泛的信息:

希望在 Mojave 发布之前解决这个问题,因为它会严重影响 macOS 上的自动化功能。

我有一个类似的错误 运行 AppleScript .app 应用程序。我收到以下错误:

Not authorized to send Apple events to Finder. (-1743)

解决方法是从 .scpt 或 .苹果脚本源代码。这会生成一个新的 .app 应用程序,在我的例子中 运行 成功。初始启动需要批准(以及一些后续启动),并且该应用程序被添加为 Settings -> Security & Privacy -> Privacy -> Automation.

下的条目

这是我为我解决问题的方法。我转到“系统偏好设置”>“安全和隐私”>“辅助功能”(左侧的选项)>(输入系统密码)> 单击“Automator”(或您要启用的应用程序),然后 TADA 就可以了。

我在打开 gitk 时遇到同样的错误。

Error in startup script: execution error: Not authorised to send Apple events to System Events. (-1743)


解决方案

转到 Settings -> Security & Privacy -> Privacy -> Automation -> Privacy tab 并选中 System Events 复选框。

我试图通过按键将当前日期插入“提醒事项”应用程序。我没有使用推荐的 "Settings -> Security & Privacy -> Privacy -> Accessibility -> Automator",而是不得不添加 Reminders 而不是 Automator,这样它就可以允许击键命令。令人恼火的是它只允许在特定应用程序上执行操作,但似乎是这样。

在 Mojave 发布几个月后,我仍然无法发送击键。对我来说,奇怪的是,解决方法是 系统偏好设置 -> 安全和隐私 -> 隐私选项卡 -> 使用您的密码解锁锁 -> 从应用程序列表中删除(使用减号按钮)Automator辅助功能行。在我的脚本可以再次发送击键之前,可能需要删除 运行 测试版中的某些内容。

编辑:退出系统偏好设置后,我再次收到警报错误。将 Automator.app 重新添加到 Accessibility 行似乎暂时解决了这个问题。

我已经使用以下步骤解决了同样的问题。 打开 Plist 并在其中添加以下键

<key>NSAppleEventsUsageDescription</key>
<string>Please give access to Export details to Outlook</string>

当您的应用程序启动时第一次执行脚本时,您将收到一个确认弹出窗口以允许或禁止。如果单击允许,它将执行脚本。

就我而言,我必须去:

设置和隐私 > 隐私 > 全磁盘访问(在左侧面板中) 和 添加 Automator

我也曾尝试将 Automator 添加到辅助功能中,正如其他答案所建议的那样(最初对我不起作用)所以也许我们需要在这两个地方添加 Automator。

像这样从终端重置为我修复了它:

tccutil reset AppleEvents; tccutil reset SystemPolicyAllFiles

如果你在尝试 运行 你的苹果脚本时没有得到类似的东西,而且你在隐私设置的自动化部分没有看到 iTerm,那么最简单的方法可能会有所帮助:重新启动您的 Mac ;) 免责声明:我这边出现这种情况的另一个原因可能是用户切换。

我在 Catalina 的 Terminal.app 中使用 osascript -e 'tell application "Finder" to display notification "some stuff" 的简单测试脚本遇到了这个错误。

我没有看到弹出窗口,也没有在 Settings -> Security & Privacy -> Privacy -> Automation -> PrivacyAutomationFull Disk Access 中找到任何有用的选项。 tccutil reset AppleEvents; tccutil reset SystemPolicyAllFiles 我也没有任何运气(不幸的是失去了我所有的相关偏好)。

对我来说,问题是我 运行在 tmux 中执行命令。一旦我与 tmux 分离,运行在终端中使用相同的命令提示我进入相关权限对话框。一旦允许并重新连接到我的 tmux 会话,我仍然无法 运行 tmux 中的命令(但 运行 在 tmux 之外的终端中)。在这一点上,我终止了我的 tmux 会话,启动了一个新会话,然后能够 运行 在终端的 tmux 中执行此命令。

我 运行 今天使用一个脚本来解决这个问题,这个脚本我已经使用了十年,它在 Photoshop 中自动栅格化 Illustrator 文件,只是被告知它没有权限而没有理由。上面的解决方案不起作用,因为在我的情况下它与系统事件无关。然后我进行了测试,发现如果使用 osascript,我计算机上的每个应用程序都存在同样的问题。如果我在脚本中告诉它打开一个文件,我会得到一个权限错误,但是出于一些荒谬的原因,如果我在脚本中告诉它关闭一个已经打开的文件,我突然会得到一个权限对话框:

osascript -e "tell application \"Adobe Photoshop 2021\" to close current document saving no"

我想我会 post 在这里帮助处于这种令人恼火的困境中的其他人。