INTRODUCCIÓN Y JUSTIFICACIÓN
Sin ánimo de complicar mucho el porqué de la conveniencia ó necesidad de integrar código de JavaScript en nuestros programas de Tasker hay que recordar que el entorno de programación que usamos está por encima de los lenguajes llamados de Alto nivel (Java, JavaScript, Perl, PHP, Python,...).
El entorno Tasker nos libera de escribir instrucciones, cada una con su sintaxis propia, puntuación, paréntesis, llaves, corchetes, ... y nos presenta unas "fichas" (los perfiles, las tareas, las escenas) con acciones concretas en las que ponemos los parámetros y variables que intervienen. Tasker, en la ejecución, convierte estas acciones en instrucciones de un lenguaje de alto nivel que, a su vez, traduce a código inteligible por la máquina.
Esta doble traducción sitúa Tasker como un lenguaje de "altísimo nivel". Esto no quiere decir que sea el no va más (aunque nos funciona muy bién). Al contrario, esta doble traducción ralentiza sensiblemente, en segun que acciones, la ejecución del programa.
Desde mi humilde punto de vista és un lenguaje para "bricolage": tiene sus limitaciones pero es muy amigable de usar.
Entre estas limitaciones: no se puede hacer "scroll" vertical u horizontal entre escenas (al menos yo no sé como hacerlo), es complicado diseñar las escenas para que se adapten a distintas resoluciones/tamaño de pantalla, etc., hay una que, a mí, me resulta especialmente inconveniente: Los programas que hago acostumbran a usar bases de datos para procesar, ordenar, consultar, extraer los campos que contienen y mostrar los resultados en escenas. Este proceso se basa casi siempre en iteraciones (repeticiones) programadas con acciones dentro de un bucle "For" - "EndFor" con sus correspondientes "Si" - "Fin si" dentro... La doble conversión de instrucciones (Tasker > Lenguaje de alto nivel > Lenguage más cercano a la máquina) hace muy lenta la ejecución en cuanto los datos a procesar sean un poco cuantiosos.
Una posible solución es convertir el Proyecto a aplicación con el Factory. El problema entonces es que cada modificación que hagamos en el código inicial (mejora, ampliación, revisión, etc.) acaba convertida en una APK nueva. Como el Factory las numera automáticamente, yo he llegado a tener casi 100 versiones de una misma APK...!
La otra solución (que és la buena) consiste en saltarse, para determinadas acciones, esta "capa intermedia" que es Tasker y escribirlas directamente en un lenguaje de Alto nivel. De este modo, en la ejecución desde el entorno Tasker, nos ahorramos la interpretación de estas acciones mas "pesadas".
Afortunadamente Tasker tiene previsto estos "atajos". En el grupo de acciones CÓDIGO tenemos: Ejecutar cónsola, Ejecutar script, Java Function, Java Object, JavaScript y JavaScriptlet. Estas acciones nos ofrecen la posibilidad de "bajar de nivel" y mejorar nuestros programas.
Otra ventaja indudable que nos ofrece el uso de este tipo de acciones es que en el entorno Tasker aparecen como una sola acción, aunque "dentro" incluyan un buen número de instrucciones de JS. Esto facilita mucho la revisión de nuestro código.
Este hilo pretende agrupar las discusiones, preguntas, propuestas y soluciones que los compañeros puedan aportar relativas al uso de JS en Tasker
RECOPILATORIO DE APORTACIONES
--> Nada mejor para empezar que un enlace a un magistral post de @
maid450 en el foro que, hace pocos dias, me abrió el cielo:
[Tutorial] Creación, uso y manipulación de variables con javascript
--> Enlace a un post mio en el que se debatia la conveniencia de abrir un hilo específico para JS y en donde pongo un sencillo ejemplo de comparación del tiempo de ejecución entre Tasker y JS.
http://www.htcmania.com/showpost.php...&postcount=273
--> Calcular la distancia entre dos puntos dados por coordenadas GPS (@WillyWeb)
http://www.htcmania.com/showthread.php?t=1026246
--> Formatear un entero con separación de millares (@maid450)
http://www.htcmania.com/showpost.php...2&postcount=38
--> Como lanzar una app de manera dinámica (con variable) y como obtener el nombre de las apps (@mlesir)
http://www.htcmania.com/showthread.php?t=1159277
Una muestra más de la simplicidad con que se pueden resolver algunas cosas que en Tasker resultan muy elaboradas (versión @
Caravantes) con JS (versión @
danko9696)
--> Subtarea que devuelve la fecha en formato AAAA-MM-DD
(Caravantes, danko9696, maid450...)
http://www.htcmania.com/showthread.php?t=1160655
--> Expresión regular para búsqueda dentro de una variable (@maid450)
http://www.htcmania.com/showthread.php?t=1161396
--> Cálculo de la letra del DNI
http://www.htcmania.com/showpost.php...3&postcount=26
--> Código en JS
para Lightning Launcher que sirve para enviar a Tasker la página actual del escritorio
http://www.htcmania.com/showpost.php...5&postcount=27
--> Extracción de datos de un archivo JSON (resultado de bajar datos de una API) con Javascript -a partir del post #45-
http://www.htcmania.com/showthread.php?t=1289407&page=3