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).

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?

  • Respuesta automática de AppleScript con número creciente
  • Hammerspoon obtiene el directory de trabajo del buscador
  • Distribuir la aplicación iOS sin interacción humana
  • Codifique el file de video usando el service, cambie el time de creación del nuevo video para que coincida con el original, elimine el original
  • 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).