In Yosemite ora è possibile utilizzare JavaScript for automation così come Applescript. Ho problemi con alcuni comandi di StandardAdditions. Per esempio. dall'applicazione Contatti posso utilizzare displayAlert, ma non displayNotification. Entrambi sono nel dizionario StandardsAdditions. Quando eseguo questi comandi tramite ScriptEditor, non ho questi problemi.Javascript per l'Automazione (OSA) Yosemite: privilegio di errore per certo StandardAddition comandi
Per i comandi che non riesco a ottenere in fase di esecuzione: Errore -10004: si è verificata una violazione dei privilegi.
codice di esempio nella 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.
Quando si utilizza il codice equivalente in AppleScript non ottengo errori di violazione di privilegio:
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 (!)
Quello che ho notato in questo caso è però che l'avviso Contatti venga visualizzato con l'icona Contatti (e Applicazione Contatti è attivato), ma i contatti notifica presenta con Script Editor icona (e l'applicazione Contatti non è attivato).
Utilizzo di Yosemite 10.10. Si tratta di un bug o mi sto perdendo qualcosa?
ottengo lo stesso risultato utilizzando frammento di esempio di Apple dalla pagina di documento (in "Scripting Additions") se sostituisco '.currentApplication()' (cioè Script Editor) con qualsiasi altra cosa. Presumo che questo sia intenzionale (non può causare un'altra app per "dire" cose?) Ma vorrei che fosse documentata con logica. –
In tal caso, la finestra di dialogo e l'avviso dovrebbero essere limitati allo stesso modo. "Mail richiede la tua password" come una finestra di dialogo è molto più pericoloso. –
Parte del commento di @BenZotto fornisce la risposta pratica: User 'Application.currentApplication()' invece di un'altra applicazione per eseguire 'displayNotification()'. –