运行 AppleScript 在 Safari 中出现 Automator 权限错误 – 替代方案和安全风险?
Automator permissions error when running AppleScript in Safari – Alternatives and security risks?
我想使用 Automator 和 AppleScript 在 Safari 中填写表格。我有一个看起来像这个玩具示例的功能脚本:
on run {}
tell application "System Events" to keystroke "Hello"
tell application "System Events" to keystroke tab
tell application "System Events" to keystroke "World"
end run
我希望在浏览器中的特定位置使用键盘快捷键执行它。但是,当我这样做时,我 运行 遇到权限问题:
The action "Run AppleSCript" encountered an error:
"System Events got an error: Automator Workflow Runner
(WorkflowServiceRunner, my_script_name) is not allowed to send keystrokes"
在 System Prefrences -> Security & Privacy -> Privacy -> Accessibility
中,我允许 Automator
和 AppleScript Utility
,在 Automation
选项卡下,我允许 System Events
用于 Safari。
如果我在 Accessibility
中也允许使用 Safari,我可以让它工作,至少是暂时的,但这似乎 过于激烈并且存在安全风险 让 Safari 始终完全控制 运行 脚本。
我应该如何处理这个问题?我希望脚本易于使用,并且不想每次都进入设置以临时允许 Safari。或者这也可以自动化吗?是否有与 Automator 和 AppleScript 完全不同的方法可以让我以更加用户友好和安全的方式执行此操作?基本上,我想做一些类似于 AutoHotKey 在 Windows.
中能够做的事情
我猜你所做的是设置一个快速操作,然后在系统偏好设置的“键盘:快捷方式”中的“服务”下为该快速操作指定一个快捷方式。通过这样做,我能够重现问题:尝试 运行 脚本要求 Safari 本身有权访问“控制您的计算机”。如果那 不是 您所做的,此解决方案应该仍然有效,但您可能还想更新您的问题,以防有更好的解决方案可用。
你能做的就是使用重定向。创建一个可以被授予控制您计算机的权限的应用程序,然后创建一个将启动该应用程序的服务。
- 使用 Automator(或脚本编辑器)通过上述步骤创建一个应用程序,作为第一步添加
tell application "Safari" to activate
。您需要执行该步骤,因为打开应用程序会将焦点从 Safari 上移开。
保存此应用程序。 (如果使用 Automator,您在开始创建脚本时告诉 Automator 它是一个应用程序;如果使用脚本编辑器,您在保存脚本时告诉脚本编辑器它是一个应用程序。)
使用 Automator 创建快速操作。给它一个动作“启动应用程序”并告诉它启动你刚刚创建的应用程序。
- 将您在第 2 步中创建的应用程序拖到系统偏好设置的“安全和隐私”设置中的“辅助功能”列表中。 (您可能必须解锁这些设置才能允许更改。)当您将其拖入时应该会自动选中它,但如果没有,您可以选中它。
- 在系统偏好设置的“键盘:快捷方式”设置的“服务”列表中,应该会列出您在第 3 步中创建的快捷操作。给它一个键盘快捷键。
此时,您应该可以使用键盘快捷方式运行该应用程序,只有该应用程序需要有控制您计算机的权限。
我想使用 Automator 和 AppleScript 在 Safari 中填写表格。我有一个看起来像这个玩具示例的功能脚本:
on run {}
tell application "System Events" to keystroke "Hello"
tell application "System Events" to keystroke tab
tell application "System Events" to keystroke "World"
end run
我希望在浏览器中的特定位置使用键盘快捷键执行它。但是,当我这样做时,我 运行 遇到权限问题:
The action "Run AppleSCript" encountered an error:
"System Events got an error: Automator Workflow Runner
(WorkflowServiceRunner, my_script_name) is not allowed to send keystrokes"
在 System Prefrences -> Security & Privacy -> Privacy -> Accessibility
中,我允许 Automator
和 AppleScript Utility
,在 Automation
选项卡下,我允许 System Events
用于 Safari。
如果我在 Accessibility
中也允许使用 Safari,我可以让它工作,至少是暂时的,但这似乎 过于激烈并且存在安全风险 让 Safari 始终完全控制 运行 脚本。
我应该如何处理这个问题?我希望脚本易于使用,并且不想每次都进入设置以临时允许 Safari。或者这也可以自动化吗?是否有与 Automator 和 AppleScript 完全不同的方法可以让我以更加用户友好和安全的方式执行此操作?基本上,我想做一些类似于 AutoHotKey 在 Windows.
中能够做的事情我猜你所做的是设置一个快速操作,然后在系统偏好设置的“键盘:快捷方式”中的“服务”下为该快速操作指定一个快捷方式。通过这样做,我能够重现问题:尝试 运行 脚本要求 Safari 本身有权访问“控制您的计算机”。如果那 不是 您所做的,此解决方案应该仍然有效,但您可能还想更新您的问题,以防有更好的解决方案可用。
你能做的就是使用重定向。创建一个可以被授予控制您计算机的权限的应用程序,然后创建一个将启动该应用程序的服务。
- 使用 Automator(或脚本编辑器)通过上述步骤创建一个应用程序,作为第一步添加
tell application "Safari" to activate
。您需要执行该步骤,因为打开应用程序会将焦点从 Safari 上移开。
保存此应用程序。 (如果使用 Automator,您在开始创建脚本时告诉 Automator 它是一个应用程序;如果使用脚本编辑器,您在保存脚本时告诉脚本编辑器它是一个应用程序。)
使用 Automator 创建快速操作。给它一个动作“启动应用程序”并告诉它启动你刚刚创建的应用程序。
- 将您在第 2 步中创建的应用程序拖到系统偏好设置的“安全和隐私”设置中的“辅助功能”列表中。 (您可能必须解锁这些设置才能允许更改。)当您将其拖入时应该会自动选中它,但如果没有,您可以选中它。
- 在系统偏好设置的“键盘:快捷方式”设置的“服务”列表中,应该会列出您在第 3 步中创建的快捷操作。给它一个键盘快捷键。
此时,您应该可以使用键盘快捷方式运行该应用程序,只有该应用程序需要有控制您计算机的权限。