Come si fa a copiare, incollare e tab usando AppleScript?


1

Sto cercando di automatizzare Copia, Incolla, Tab e Sinistra in Microsoft Excel e Safari o Firefox usando Applescript. Ho una limitata esperienza nella programmazione e recentemente ho rispettato un codice, ma sfortunatamente non funziona come previsto ...

Quello che voglio succedere;

  1. Nella copia del browser
  2. In Excel Incolla, Sinistra, Copia
  3. Nella scheda Browser , Incolla, Scheda x8
  4. Ripetere
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

Risposte:


1

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

  1. Si noti che, a seconda della velocità / lentezza con cui il sistema risponde, potrebbero essere necessari piccoli ritardi dopo ogni pressione o azione. Dovrai calcolare il tempo minimo empiricamente.

  2. Ogni volta che "attivi" o avvii Safari, Excel o qualsiasi altra applicazione all'interno dello script ci sarà un ritardo fino a quando l'app non 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 codice che mette in pausa lo script fino all'avvio dell'app.

  3. Quando apri Safari ed Excel non specifichi alcuna finestra, file o URL specifici da utilizzare come target per i tasti successivi. Quindi, come scritto, lo script passerà automaticamente alla finestra / scheda anteriore di ogni app. Immagino che vada bene se quello che stai prendendo di mira è la finestra principale. Se non esiste una finestra aperta, lo script non funzionerà. Quindi, per esempio, per aggirare questo ho aggiunto il codice per aprire un nuovo file Excel.

  4. Come attualmente costruito, lo script viene copiato dalla finestra anteriore in Safari, quindi alla fine torna alla stessa finestra per eseguire la scheda - incolla - scheda x 8. Si deve presumere che fosse l'intenzione?

  5. Come attualmente costruito, il default è incollare nella cella A1 di Excel. Quindi dici a Excel di passare a una cella a sinistra, ma non c'è cella a sinistra di A1.

  6. Gran parte del codice è scritto per gli script GUI. Ove possibile, è meglio usare i comandi di Applescript per eseguire l'attività desiderata. Per ora lo lascerò così. Probabilmente hai abbastanza idee per imparare le basi adesso.

    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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.