1 votos

¿Puede un AppleScript crear nuevas variables por sí mismo?

Tengo un archivo AppleScript .app que crea una variable de lista basada en los datos HTML de un sitio web. El número de elementos de esta lista varía en función de los datos HTML únicos que se descargan en cada iteración, y puede oscilar entre 1 y 50.

En última instancia, quiero mostrar el contenido de cada línea como su propio menú desplegable en un diálogo. Estoy utilizando la biblioteca externa script, Juego de herramientas de diálogo para lograrlo, lo que requiere la declaración de muchas variables adicionales.

Juego de herramientas de diálogo funciona de forma diferente a choose from list por ejemplo. El choose from list ajustará automáticamente su tamaño para añadir una nueva línea para cada elemento de la lista. Pero, para un Juego de herramientas de diálogo en su lugar debe por separado definir (es decir, como una variable propia y única) cada menú desplegable que se necesite. Si no lo hace, no existirán menús desplegables en el diálogo.

Por lo tanto, el 50 if statements son necesarios para garantizar que el diálogo contenga todos los menús desplegables, así:

repeat with i from 1 to (count of theList)
        if (i is 1) then
            set {dropdown1} to create labeled dropdown (item i of theList)
        else if (i is 2) then
            set {dropdown2} to create labeled dropdown (item i of theList)
        i if (i is 3) then
            set {dropdown3} to create labeled dropdown (item i of theList)
        else if (i is 4) then

        ...

        else if (i is 50) then
            set {dropdown50} to create labeled dropdown (item i of theList)
        end if
end repeat

-- Note: The above code snippet is a very stripped down version of my code.

¿Es posible que un AppleScript cree, por sí mismo, nuevas variables que tengan títulos de fórmula?

Este es el tipo de cosas que deseo:

repeat with i from 1 to (count of theList)
    set {(("dropdown" & i) as variable)} to create labeled dropdown (item i of theList)
end repeat

OS X El Capitan, versión 10.11.6.


1voto

Roxus_Maximus Puntos 11

Este es un ejemplo de uso de una lista para lograr algo similar a lo que usted está tratando de hacer, creo:

    set varList to {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}

    tell application "Google Chrome"
        count every tab of window 1
        set tabCount to result
        set counterOne to 1
        repeat tabCount times
            get URL of tab counterOne of window 1
            set item counterOne of varList to result
            set counterOne to counterOne + 1
        end repeat
    end tell

    tell application "Google Chrome"
        make new window
        set counterOne to 1
        repeat tabCount times
            set tabVari to item counterOne of varList
            open location tabVari
            set counterOne to counterOne + 1
        end repeat
    end tell

0voto

leora Puntos 5626

Esto es sólo una respuesta porque necesito incluir un script. Puede que te sea útil saber que todavía puedes escribir código auto modificable en AppleScript.

Aquí hay un ejemplo que añade un "beep 2" como su primera línea cada vez que se ejecuta. Estás usando un kit de herramientas con el que no estoy familiarizado, y puede que no aprecie que le cambien el código, pero también puede que te salgas con la tuya.

    -- Self Modifying code
-- BP 2006
-- Still works in 2019

-- Just a Demo
-- Run this code twice and look at the first line It will change

set mystring to "beep 2"

--display dialog mystring

tell application "Script Editor"
    activate
    set text of front document to mystring & "\r" & text of front document -- prepend the line as a new line
end tell

tell application "Script Editor"
    activate
end tell

Los escritores del lenguaje trabajaron duro para deshacerse del código auto-modificable en los años 80, pero todavía está ahí en AppleScript, y a veces se pueden hacer trucos útiles con ese hecho.

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