Il servizio Applescript non riesce a causa di vincoli mancanti

2

Ho scritto un servizio di automazione che esegue un piccolo script per impostare il volume e riprodurre un suono.

Per attivare il servizio, l'ho copiato in /Library/Services e ho fatto un chmod +x . Per registrare una scorciatoia da tastiera per il servizio, ho eseguito defaults write -g NSUserKeyEquivalents '{"HelloWorld" = "$@~1";}' dove HelloWorld è il nome del servizio come visualizzato nel menu Servizi e $@~1 my scorciatoia (che si risolve in ⌘ + ⌥ + ⇧ + 1)

Dopo un riavvio posso vedere il servizio nel menu con il collegamento accanto ad esso. Quando premo la combinazione di tasti desiderata, appare un avviso che mi informa che lo script ha riscontrato un errore. Appare anche un errore nel registro:

Detected missing constraints for . It cannot be placed because there are not enough constraints to fully define the size and origin. Add the missing constraints, or set translatesAutoresizingMaskIntoConstraints=YES and constraints will be generated for you. If this view is laid out manually on macOS 10.12 and later, you may choose to not call [super layout] from your override. Set a breakpoint on DETECTED_MISSING_CONSTRAINTS to debug. This error will only be logged once.

Questo suggerisce un errore con una vista che non è inizializzata correttamente, ma non sto usando nessuna vista.

Ecco il contenuto del flusso di lavoro di Automator:

on run

    if (get output volume of (get volume settings)) < 50 then
        set volume output volume 50
    end if

    do shell script "afplay /Library/Application\ Support/HelloWorld/hello.mp3"

    return
end run
    
posta K40S 19.05.2017 - 15:23
fonte

1 risposta

1

Poiché è stato richiesto nei commenti (mi dispiace ci sia voluto così tanto tempo), ecco una versione funzionante dello script. Il trucco consiste nel mettere il nome del file (che contiene spazi) tra virgolette, perché possono essere sfuggiti.

on run

    if (get output volume of (get volume settings)) < 50 then
        set volume output volume 50
    end if

    do shell script "afplay \"/Library/Application Support/HelloWorld/hello.mp3\""

    return
end run
    
risposta data 29.11.2018 - 14:56
fonte

Leggi altre domande sui tag