Automator es bastante tonto incluso en un buen día. Las principales cosas que hay que tener en cuenta al crear un flujo de trabajo mediante programación son las siguientes acciones bundle identifier
y su settings
. Estos se pueden encontrar mirando la acción de Info.plist , o usando algo como lo siguiente en el editor de script:
tell application "Automator"
set actionID to first item of (get id of Automator actions whose name is "Run Shell Script") -- or whatever
log result
log (get name of settings of Automator action id actionID)
end tell
Para el Run Shell Script
acción, esos serían "com.apple.RunShellScript"
y {"inputMethod", "CheckedForUserDefaultShell", "source", "COMMAND_STRING", "shell"}
.
Los ajustes son los que se encuentran en la interfaz de usuario de la acción, y varían en función de lo que hace la acción y de los ajustes que expone. Para el Run Shell Script
acción, los principales serían "COMMAND_STRING"
que es el texto script del campo de texto, y "inputMethod"
que es un índice en el Pass input:
elemento del menú.
Otro elemento que posiblemente hay que tener en cuenta es el índice de la acción en el flujo de trabajo, pero a menos que vaya a mover las acciones, lo más probable es que sólo tenga que añadirlas al final del flujo de trabajo.
No parece haber una propiedad para establecer el tipo de documento, pero para un flujo de trabajo regular puede aceptar el valor predeterminado con una pulsación de tecla, o simplemente establecer manualmente el tipo de flujo de trabajo después de que el flujo de trabajo se crea detrás de la hoja de elección de Automator.
Después de todo eso, un script para crear un flujo de trabajo de Automator con un Run Shell Script
la acción sería algo así como:
set theScript to "for f in \"$@\"
do
echo \"$f\"
done" -- the shell script
tell application "Automator"
set actionID to Automator action id "com.apple.RunShellScript"
tell (make new workflow)
add actionID to it -- add to the end of the workflow
tell last Automator action
set value of setting "inputMethod" to 1 -- arguments menu
set value of setting "COMMAND_STRING" to theScript
end tell
end tell
activate
# tell application "System Events" to keystroke return -- default workflow
end tell