Estoy escribiendo un script de Automator simple en JavaScript (porque soy mucho más productivo en JavaScript). Para propósitos de prueba, simplemente eval()
la entrada.
El guion es:
// Workflow receives current text in any application function run(input, parameters) { // 1+2*3 var app = Application.currentApplication() app.includeStandardAdditions = true // app.displayDialog(input) // app.displayDialog(input[0]) result = eval(input[0]) || 0; app.displayDialog(result) app.setTheClipboardTo(result) return result } // Copy to Clipboard
Me gustaría obtener el resultado en el portapapeles. Como ves arriba, he aplicado la función setTheClipboardTo()
.
El flujo de trabajo recibe el texto actual.
También he agregado la acción Copiar al portapapeles al final.
Lo he intentado con o sin la función setTheClipboardTo()
, y con o sin la acción Copiar al portapapeles . El mensaje mostrado tiene el resultado correcto, pero no puedo enviarlo al portapapeles.
No sé qué hice mal antes, excepto posiblemente agregar la acción al final. Aquí hay una versión que funciona:
// Workflow receives current text in any application // Replaces Selection function run(input, parameters) { // 1*2*3*4*5*6+7-8-9 // 1 2 3 var app = Application.currentApplication(); app.includeStandardAdditions = true; // Filter for eval() expression = input[0].replace(/[^0-9 +\-*\/÷×()]/g,'?') try { result = eval(input[0])*1; } catch(e) { result = 0 } app.setTheClipboardTo(result.toString()) return result }