在 Yosemite 中,现在可以使用JavaScript和 Applescript 进行自动化。我在使用某些 StandardAdditions 命令时遇到问题。例如,从联系人应用程序我可以使用displayAlert,但不能使用displayNotification。两者都在 StandardsAdditions 字典中。通过 ScriptEditor 运行这些命令时,我没有遇到这些问题。
对于我在运行时得到的失败命令:Error -10004: A privilege violation occurred。
JavaScript中的示例代码:
ScriptEditor = Application("Script Editor");
ScriptEditor.includeStandardAdditions = true;
app = Application("Contacts"); // or e.g. "Calendar", "System Events", "Finder"
app.includeStandardAdditions = true;
// -- testing: displayAlert()
ScriptEditor.displayAlert("Hello world!");
app.displayAlert("Hello world!"); // success, no privilege error
// -- testing: displayNotification()
ScriptEditor.displayNotification("Hello world!");
//app.displayNotification("Hello world!"); // Error -10004: A privilege violation occurred.
// --- testing: say()
ScriptEditor.say("Hello world!");
//app.say("Hello world"); // Error -10004: A privilege violation occurred.
// --- testing: beep()
ScriptEditor.beep(1);
//app.beep(1); // Error -10004: A privilege violation occurred.
在AppleScript中使用等效代码时,我不会收到权限冲突错误:
tell application "Script Editor" to display alert "from Script Editor" -- with Script Editor icon
tell application "Contacts" to display alert "from contacts" -- with Contacts icon
tell application "Script Editor" to display notification "from Script Editor" -- with Script Editor icon
tell application "Contacts" to display notification "from contacts" -- with Script Editor icon (!)
在这种情况下,我注意到的是联系人警报显示为联系人图标(并且联系人应用程序已激活),但联系人通知显示为脚本编辑器图标(并且联系人应用程序未激活)。
使用优胜美地 10.10。这是一个错误还是我错过了什么?