0 votos

Repita AppleScript si el usuario confirma un cuadro de diálogo emergente

He construido una secuencia de comandos que se selecciona y se copia todo el texto de la parte frontal de Safari ficha, cierra la pestaña, y pega el texto en el frente BBEdit documento con un par de líneas en blanco de relleno.

Lo voy a ejecutar cuando tengo varias pestañas me quiere agarrar el texto de dumping de todo en un solo documento, así que voy a necesitar una opción de repetición.

No quiero codificar el número de repeticiones, porque es impredecible (y no quiero cerrar pestañas de Safari queramos o no). Así que quiero que la secuencia de comandos completa de una vez, aparecerá una opción de "Repetir?" o "¡Hecho!", y, a continuación, repita, incluyendo el pop-up, hasta que el usuario elige "Hecho".

No sé cómo el código de la repetición. Aquí estoy yo:

tell application "Safari" to set the clipboard to (text of current tab of front window) as string
delay 0.1

tell application "Safari"
    close current tab of front window without saving
end tell
delay 0.1

tell application "System Events"
    tell application "BBEdit" to activate
    key code 36
    key code 36

end tell

tell application "BBEdit"
    activate
    paste
end tell

tell application "System Events"
    tell application "BBEdit" to activate
    key code 36
    key code 36

end tell

set theAlertText to "Repeat?"
display alert theAlertText as critical buttons {"Yes", "No"} default button "Yes" cancel button "No"
--> Result: {button returned:"Continue"}

--need repeat code here

1voto

Ted Wrigley Puntos 101

En primer lugar, usted está haciendo su vida más difícil usando el portapapeles y la interfaz de secuencias de comandos. BBEdit cuenta con un completo diccionario de secuencias de comandos diseñado para trabajar con texto, he modificado el código para usarlo.

Todo lo que necesitas es una repetición de un bucle y, a continuación, un condicional exit repeat, como sigue:

-- first find or create a text doc called 'Transcription.txt,' and select it
tell application "BBEdit"
    set target_doc_list to every document whose name is "Transcription.txt"
    if (count of target_doc_list) is 0 then
        set target_doc to make new text document with properties {name:"Transcription.txt"}
    else
        set target_doc to item 1 of target_doc_list
    end if
    select target_doc
end tell

-- repeat loop to run through Safari pages
repeat
    tell application "Safari"
        set page_title to (name of current tab of front window)
        set page_text to (text of current tab of front window)
        close current tab of front window without saving
    end tell
    tell application "BBEdit"
        tell window 1
            set end of contents of first text document to return & return & page_text & return & return
        end tell
    end tell

    tell application "Safari"
        set next_page_title to (name of current tab of front window)
    end tell

    set theAlertText to "Finished with page " & page_title & ". Next page is titled '" & next_page_title & "'. Continue?"
    display alert theAlertText as critical buttons {"Quit", "Process"} default button "Process"
    if (button returned of the result) is "Quit" then
        exit repeat
    end if
end repeat

Esto extrae el texto de la pestaña actual de Safari y la pone en una variable, y luego añade que el contenido de esa variable (collar con retornos de carro) para el primer documento en el primer BBEdit ventana. Luego se le pregunta si desea repetir la operación con la siguiente ficha, salir del bucle si usted dice 'Salir'

Usted puede modificar este, más que suficiente para saltar encima de las pestañas, o para seleccionar las fichas para el proceso de antelación. Déjeme saber si usted desea variaciones de ese tipo.

0voto

red_menace Puntos 111

Simplemente puede poner todo en una instrucción repeat , que se repetirá continuamente a menos que especifique lo contrario; al salir del diálogo, se cancelará y el script. Tenga en cuenta que BBEdit tiene una compatibilidad de scripting decente, por lo que no se necesita el material de System Events :

 repeat -- forever, or at least until quit

    tell application "Safari"
        activate -- show what we're working with
        display alert "Continue?" message "Continue processing and close the current Safari tab?" as critical buttons {"Stop", "Continue"} default button "Continue" cancel button "Stop"
        set the clipboard to (text of current tab of front window) as text
        close current tab of front window
    end tell

    tell application "BBEdit"
        try -- guard
            get front document
        on error
            make new document
        end try
        tell front document
            set theText to (the clipboard)
            if theText is not "" then set after (get last line) to return & return & theText
        end tell
    end tell
end repeat
 

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X