Come funziona una copia, incolla e tabulazione usando AppleScript?

1

Sto cercando di automatizzare Copy, Paste, Tab e Left in Microsoft Excel e Safari o Firefox usando Applescript. Ho un'esperienza limitata nella codifica e di recente ho rispettato un codice, ma sfortunatamente non funziona come previsto ...

Cosa voglio che accada;

  1. Nel browser Copia
  2. In Excel Incolla, Sinistra, Copia
  3. Nella scheda del browser, incolla, scheda x8
  4. Ripeti
repeat 50 times

    tell application "Safari" to activate
    tell application "System Events"
        tell process "Safari"
            keystroke "c" using command down
        end tell
    end tell

    delay 0.3

    tell application "Microsoft Excel" to activate
    tell application "System Events"
        tell process "Microsoft Excel"
            keystroke "v" using command down
            delay 0.3
            key code 123
            keystroke "c" using command down
        end tell
    end tell

    tell application "Safari" to activate
    tell application "System Events"
        tell process "Safari"
            keystroke tab
            keystroke "v" using command down
            keystroke tab
            keystroke tab
            keystroke tab
            keystroke tab
            keystroke tab
            keystroke tab
            keystroke tab
            keystroke tab
        end tell
    end tell

    delay 0.3

end repeat
    
posta Freddie F 19.08.2015 - 14:22
fonte

1 risposta

1

È difficile sapere esattamente cosa stai cercando di ottenere ma alcuni miglioramenti sono stati introdotti nel codice sottostante, con commenti aggiunti nel codice. Diversi punti:

  1. Si noti che a seconda di quanto veloce / lento il sistema sta rispondendo, potrebbero essere necessari piccoli ritardi dopo ogni battuta o azione. Dovrai calcolare il tempo minimo empiricamente.

  2. Ogni volta che "attivi" o avvii Safari, Excel o qualsiasi applicazione all'interno dello script, ci sarà un ritardo fino a quando l'app sarà attiva e funzionante. Per far fronte a questo, avrai bisogno di queste app in esecuzione prima di eseguire lo script, o devi introdurre ritardi abbastanza lunghi nel tuo script, o meglio ancora devi aggiungere il codice che mette in pausa lo script fino all'avvio dell'app.

  3. Quando apri Safari ed Excel non stai specificando alcuna finestra, file o URL specifico per la destinazione delle sequenze di tasti successive. Quindi, come scritto, lo script verrà automaticamente impostato sulla finestra / scheda frontale di ogni app. Immagino che sia OK se quello che stai prendendo di mira è la finestra frontale. Se non esiste una finestra aperta, lo script avrà esito negativo. Ad esempio, per aggirare questo ho aggiunto del codice per aprire un nuovo file excel.

  4. Come attualmente costruito, lo script copia dalla finestra frontale in Safari, quindi alla fine torna alla stessa finestra per eseguire il tab-paste - tab x 8. Si deve presumere che era l'intenzione?

  5. Come attualmente costruito, l'impostazione predefinita è incollare nella cella A1 di Excel. Quindi dirai a Excel di spostarsi su una cella una volta a sinistra, ma non c'è nessuna cella a sinistra di A1.

  6. Gran parte del codice è scritta per lo scripting GUI. Ove possibile, è meglio usare i comandi di Applescript per svolgere l'attività desiderata. Lo lascerò così per ora. Probabilmente hai abbastanza idee per imparare le basi in questo momento.

    tell application "Safari" to activate
    
    tell application "System Events"
        tell process "Safari"
        keystroke "c" using command down
        delay 0.3
        end tell
    end tell
    
    
    tell application "Microsoft Excel" to activate
        delay 5 -- time required to launched Excel if not already open
    
    tell application "System Events"
        tell process "Microsoft Excel"
        keystroke "n" using command down -- open new excel page
        delay 0.5 -- wait for new excel page to open
        keystroke "v" using command down
        delay 0.2 -- wait for key stroke entry
        key code 123
        delay 0.2 -- wait for key stroke entry
        keystroke "c" using command down
        delay 0.2 -- wait for key stroke entry
    end tell
    
    end tell
    
    
    tell application "Safari" to activate
    
    tell application "System Events"
        tell process "Safari"
        keystroke tab
        delay 0.2 -- wait for key stroke entry
        keystroke "v" using command down
        delay 0.2 -- wait for key stroke entry
    
        repeat 8 times
            keystroke tab
            delay 0.2 -- wait for key stroke entry
        end repeat
    
    end tell
    
    end tell
    
risposta data 20.08.2015 - 09:38
fonte

Leggi altre domande sui tag