Applescript non richiama il comando di scelta rapida

0

Ho un lungo documento TextEdit che apro spesso (tramite un tasto, grazie ad Alfred). Contiene molte ortografie non standard, quindi deseleziono "Controlla ortografia durante la digitazione" (anche se voglio che il controllo ortografico sia predefinito su altri documenti TextEdit). Nota che ho creato il collegamento "Comando / Opzione / Controllo - S" (in Preferenze / Tastiera / Scorciatoie) per attivare il comando.

Per salvare me stesso un passaggio, voglio creare un applescript per aprire il documento e attivare quel comando. Ma non riesco a farlo funzionare.

Il documento si apre, ma "Verifica ortografia durante la digitazione" non si disattiva.

tell application "Finder"
activate
open document file "reference.rtf" of folder "Documents" of folder "MYSTUFF" of folder "Users" of startup disk
end tell

tell application "TextEdit" to activate
tell application "System Events"
keystroke "s" using {command down, option down, control down}
end tell

==============

EDIT:

Ho inserito "Delay", ma questo non aiuta; le ortografie sono evidenziate.

È possibile che Applescripts per qualche motivo non possa richiamare le scorciatoie personalizzate all'interno delle applicazioni (che sono state truccate tramite Prefs / Tastiera / Scorciatoie)?

C'è un altro modo per richiamare il comando "Controllo ortografico durante la digitazione"? Non sembra essere uno dei comandi scriptable di TextEdit.

    
posta Jimmbo 02.10.2015 - 22:29
fonte

3 risposte

1

Sospetto che non stia accettando la scorciatoia personalizzata perché il collegamento è utilizzato esclusivamente in TextEdit, mentre lo script lo inviava a Eventi di sistema.

Che sia vero o no, il seguente script funziona. Sceglie la voce di menu anziché attivarla tramite collegamento:

tell application "Finder"
activate
open document file "reference.rtf" of folder "Documents" of folder "MYSTUFF" of folder "Users" of startup disk
end tell
delay 1
activate application "TextEdit"
delay 1
tell application "System Events"
tell process "TextEdit"


click menu item "Check Spelling While Typing" of menu 1 of menu item "Spelling and Grammar" of menu 1 of menu bar item "Edit" of menu bar 1

end tell
end tell
    
risposta data 04.10.2015 - 21:55
fonte
0

Nota aggiunta dopo i commenti ...
Potrebbe non essere il ritardo a causare il problema: sembra più probabile che sia la difficoltà nel determinare lo stato iniziale del pulsante di controllo automatico.

Penso che il "ritardo" sia il tuo vero problema, come ha detto Arthur, ma puoi affinare lo script fino a 3 righe, aggiungendo anche il ritardo
Se stai utilizzando HD piuttosto che SSD, potresti dover alzare il valore di ritardo su 2 o 3, solo per dare tempo al documento di aprirsi e amp; vieni in primo piano.

tell application "Finder" to open file ((path to documents folder as text) & "reference.rtf")
delay 1
tell application "System Events" to keystroke "s" using {command down, option down, control down}

Suppongo che il percorso utenti / mistico / Documenti sia la normale cartella ~ / Documenti con il nome dell'account modificato. La mia nuova versione non si basa sul tuo nome utente nello script, utilizzerà semplicemente la cartella ~ / Documenti dell'utente corrente

    
risposta data 03.10.2015 - 10:05
fonte
0

Sto aggiungendo questo come una seconda risposta, poiché penso che la ricerca per arrivare qui valga la pena di rimanere nel flusso.

Uso di molti Google-Fu e amp; Helper UI di Apple, UIElementInspector, che ho ottenuto tramite FDMlib (che collega direttamente ad Apple per il download) sono riuscito a cobble questo insieme ...

tell application "Finder" to open file ((path to documents folder as text) & "reference.rtf")
delay 1

tell application "System Events" to tell process "TextEdit"
    set v to (value of attribute "AXMenuItemMarkChar" of menu item "Check Spelling While Typing" of menu 1 of menu item "Spelling and Grammar" of menu 1 of menu bar item "Edit" of menu bar 1)

    if v = "✓" then
        click menu item "Check Spelling While Typing" of menu 1 of menu item "Spelling and Grammar" of menu 1 of menu bar item "Edit" of menu bar 1
    end if
end tell

Il 'set v per ...' è la parte che esamina lo stato di commutazione corrente di quella voce di menu. È un po 'difficile e amp; pronto, ma funziona controllando il segno di spunta effettivo sull'elemento del menu stesso. Se non è spuntato, non fa nulla, se lo è, passa la mano per essere spento.

Sono sicuro che uno script appropriato potrebbe perfezionarlo in una dozzina di modi - ma funziona: -)

    
risposta data 05.10.2015 - 14:10
fonte

Leggi altre domande sui tag