Yosemite では、自動化に Applescript だけでなくJavaScriptも使用できるようになりました。特定の StandardAdditions コマンドで問題が発生しています。たとえば、Contacts アプリケーションからはdisplayAlertを使用できますが、 displayNotificationは使用できません。どちらも StandardsAdditions ディクショナリにあります。これらのコマンドを ScriptEditor で実行すると、これらの問題は発生しません。
実行時に失敗するコマンドについては、エラー -10004: 特権違反が発生しました。
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 (!)
その場合、連絡先アラートは連絡先アイコンで表示されますが (連絡先アプリが有効になっています)、連絡先通知はスクリプト エディターアイコンで表示されます (連絡先アプリは有効になっていません)。
Yosemite 10.10 を使用。これはバグですか、それとも何か不足していますか?