AppleScript: cómo establecer variables para un número indeterminado de elementos de la list?

Soy nuevo en AppleScript. Intento crear una secuencia de commands que tome los elementos de la list de una acción de flujo de trabajo de Automator anterior y convertirlos en variables.

Habrá un número indeterminado de elementos de la list (bueno, entre 1 y 40 cada ejecución).

  • AppleScript: ¿Cómo verificar si el portapapeles consiste en un file (en lugar de text)?
  • Ejecutando script a través de launchd sin posts molestos
  • ¿Expulsando todas las unidades de networking a través de Applescript / Automator / Shell?
  • Convierta un file en un panel de Papelería a través de la línea de command
  • Ejecuta una aplicación con una carpeta diferente como "~ / Library"
  • ¿Cómo puedo ver cuánto time mi computadora ha estado activa (no está inactiva)?
  • Esto funciona para un número determinado de elementos de la list, digamos tres.

    on run {input, parameters} set value of variable "F1" of front workflow to item 1 of input set value of variable "F2" of front workflow to item 2 of input set value of variable "F3" of front workflow to item 3 of input return input end run 

    Pero si solo hay dos elementos de la list generados a partir de la acción del flujo de trabajo anterior, nos encontramos con problemas.

    Entonces, actualicé el script usando if para tratar de evitar este problema.

     on run {input, parameters} if item 1 exists then set value of variable "F1" of front workflow to item 1 of input end if if item 2 exists then set value of variable "F2" of front workflow to item 2 of input end if if item 3 exists then set value of variable "F3" of front workflow to item 3 of input end if return input end run 

    Cuando ejecuto esto, solo se rellena la primera variable F1 . Los otros se dejan en blanco / no se pueblan. No estoy seguro de cómo seguir adelante con esto?

    ¿Alguien puede decirme si estoy en el path correcto o si hay una mejor manera de hacerlo?

  • Acción de carpeta para agregar al comentario de Spotlight para files en Finder
  • Agregue un enlace a Reading List from Terminal
  • ¿Puedo generar un enlace cliqueable al file local usando una ruta relativa como "file: /// ~"?
  • Problema con mi applescript para exportar files de keynote a powerpoint
  • Ruta de carpeta temporal para Apple Script
  • AppleScript: ¿cómo cerrar las alertas de notificación de una aplicación específica?
  • One Solution collect form web for “AppleScript: cómo establecer variables para un número indeterminado de elementos de la list?”

    La statement de la variable debe hacerse antes del time de ejecución . El siguiente ejemplo de código AppleScript , ejecutado en el Editor de scripts , es demostrar una forma de hacerlo:

     set input to {"one", "two", "three"} set F1 to missing value set F2 to missing value set F3 to missing value set F4 to missing value try if item 1 of input is not missing value then set F1 to item 1 of input log "F1 is: " & F1 end if if item 2 of input is not missing value then set F2 to item 2 of input log "F2 is: " & F2 end if if item 3 of input is not missing value then set F3 to item 3 of input log "F3 is: " & F3 end if if item 4 of input is not missing value then set F4 to item 4 of input log "F4 is: " & F4 end if end try log "F4 is still: " & F4 

    El resultado del logging es:

     (*F1 is: one*) (*F2 is: two*) (*F3 is: three*) (*F4 is still: missing value*) 

    Obviamente, el command de log se usa para mostrar que a las variables se les asignó un nuevo valor , excepto el último porque la input list solo tenía tres elementos . Tendrá que crear esto para todas las variables que sean necesarias, ya que no puede agregarlas una vez que se haya iniciado la ejecución del código . Mencionó "entre 1 y 40 cada ejecución" en su OP.

    Eliminaría los commands de log para el código real dentro de cada uno de los bloques de instrucciones if , además de las asignaciones de variables , según corresponda en ese punto en la ejecución del código , si corresponde.

    Tenga en count que al envolver el código del grupo de bloques de instrucciones if , eso establece el nuevo valor de las variables en function del valor del list item de la list item , en una statement try cuando hay less items en la input list , no arroja un error que detendría la ejecución del código y continúa con el código restante.

    El valor de la variable inicialmente se le asigna un missing value , sin embargo, también se puede usar "" (comillas dobles). Me gusta utilizar el missing value a veces ya que puede ser más fácil leer el código .

    NOTA: El ejemplo del código AppleScript arriba simplemente es eso, y está codificado como es para demostrar una forma de asignar a las variables un valor de una list . Que es lo que se input en el context de, por ejemplo, on run {input, parameters} de una acción Ejecutar AppleScript en un flujo de trabajo de Automator . Dependiendo de cuál sea la fuente de la input y qué se hará con ella, es posible que deba agregar, por ejemplo as string o as text u otra coerción según corresponda como / si corresponde, en este caso después del item n of input , por ejemplo, set F1 to item 1 of input as string .

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).