Tasker Para hablar de todo lo relacionado con la aplicación tasker

Respuesta
 
Herramientas
  #1  
Viejo 01/03/17, 22:12:34
Array

[xs_avatar]
cace0353 cace0353 no está en línea
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 504
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
Eliminar espacio en blanco al principio de una cadena

Un pequeño problema con los espacios en blanco: tengo una variable %resultado que compongo con otras variables obtenidas en distintas partes de la tarea: %parte1,%parte2,%parte3… (una por línea)

En la obtención de las diferentes %parte pongo una condición Establecer Variable: %parte a " " (un espacio en blanco sin las comillas) si la variable no está asignada, ya que Tasker no me permite dejarla vacía.

Esto motiva que en el texto visualizado final aparezcan espacios en blanco innecesarios al principio de algunas lineas que afean el resultado en pantalla.

Hay alguna solución o "truco" en Tasker o Javascript que resuelva el problema?

Enviat des del meu SM-T550 usant Tapatalk
__________________
Me apasiona volar, pero con los pies en el suelo...

Última edición por cace0353 Día 01/03/17 a las 22:15:40.
Responder Con Cita


  #2  
Viejo 01/03/17, 23:01:45
Array

[xs_avatar]
fus fus no está en línea
Usuario muy activo
 
Fecha de registro: dic 2010
Localización: Polsovia
Mensajes: 1,503
Modelo de smartphone: Samsung Galaxy Nexus
Tu operador: Vodafone
Pues imagino que hay dos maneras de hacerlo en javascript, la mejor manera, sería componer %resultado directamente con javascript, no incluyendo las variables con el caracter " ", dependiendo de los valores que puedan tomar tus %parte, podrás usar unos metodos u otros, pero si nunca empiezan por espacios con un startsWith(" "), si es true, no lo añades.
En caso de que pudieran empezar con un espacio, pues ya tendríamos que saber más sobre esas variables para poder apañarlo

Un saludo
__________________
Tutorial sobre el mundo de las roms GNexus
Las OTA's llevan a la ira, la ira lleva al flaseo, el flaseo lleva al lado oscuro de Android.
Responder Con Cita
  #3  
Viejo 01/03/17, 23:09:47
Array

[xs_avatar]
cace0353 cace0353 no está en línea
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 504
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
Gracias por contestar @fus,
Soy relativamente nuevo en JS y voy aprendiendo poco a poco.
No conocia este comando.
Podrías expresar (para mí y para otros compañeros que quieran aprender) como sería la sintaxis de uso en este caso?

Enviat des del meu Nexus 5 usant Tapatalk
__________________
Me apasiona volar, pero con los pies en el suelo...
Responder Con Cita
  #4  
Viejo 01/03/17, 23:36:47
Array

[xs_avatar]
fus fus no está en línea
Usuario muy activo
 
Fecha de registro: dic 2010
Localización: Polsovia
Mensajes: 1,503
Modelo de smartphone: Samsung Galaxy Nexus
Tu operador: Vodafone
Voy a pensar que tus variables NUNCA empiezan por un espacio, por lo que quedaría algo así
Tambien ten en cuenta que no se el número de partes que puede tener tu variable %resultado, ni que contienen las variables, por lo que es más difícil ateclarlo.
Basicamente tendríamos una serie de if's que irían añadiendo las variables a un String, si el nnúmero de partes es fijo, como imagino que es el caso, pues es mucho más sencillo
Código:
var resultado = "";
if(parte1.startsWith(" ") == false){
resultado = resultado + parte1;
}
//Y continuamos añadiendo un if por cada parte, cambiando el numero de parte
if(parte2.startsWith(" ") == false){
resultado = resultado + parte2;
}
.
.
.
Imagino que esto se podría hacer de una forma más elegante, sabiendo más sobre dichas partes

Edito: Como no se muy bien como maneja JavaScript el tema de la suma de variables, o como pasa Tasker las variables, no se si sería necesario añadir .toString() al final de parteX en la asignación de resultados, si te funciona así la tarea, pues nos podemos dar con un canto en los dientes
__________________
Tutorial sobre el mundo de las roms GNexus
Las OTA's llevan a la ira, la ira lleva al flaseo, el flaseo lleva al lado oscuro de Android.

Última edición por fus Día 01/03/17 a las 23:39:35.
Responder Con Cita
Gracias de parte de:
  #5  
Viejo 01/03/17, 23:40:01
Array

[xs_avatar]
cace0353 cace0353 no está en línea
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 504
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
Clarísimo así, muchas gracias!
Mañana me meto en ello…

Enviat des del meu Nexus 5 usant Tapatalk
__________________
Me apasiona volar, pero con los pies en el suelo...
Responder Con Cita
  #6  
Viejo 01/03/17, 23:49:04
Array

[xs_avatar]
cace0353 cace0353 no está en línea
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 504
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
No me he podido resistir:
Probado y funcionando…!

EDITO: No funciona. Cuando ayer hice la prueba inserté el código JS antes de la composición que hacía en Tasker puro y no borré estas acciones.
En la madrugada no hay resultados vacíos y, por tanto se vé bien. Esta mañana he borrado la parte en Tasker puro y la acción JS me devuelve %resultat.

Habrá que seguir probando…

Gracias!

Enviat des del meu Nexus 5 usant Tapatalk
__________________
Me apasiona volar, pero con los pies en el suelo...

Última edición por cace0353 Día 02/03/17 a las 09:43:50.
Responder Con Cita
  #7  
Viejo 02/03/17, 10:39:26
Array

[xs_avatar]
WillyWeb WillyWeb está en línea ahora
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
Detalles a tener en cuenta cuando se trabaja con JS en Tasker:

-Las variables locales de Tasker pasan automáticamente a JS.
-Las variables globales de Tasker se tienen que pasar a JS con global("Variable").
-Para que una variable de JS pase a Tasker como local vale con declararla con "var".
-Para que una variable de JS pase a Tasker como global se tiene que usar setGobal("Variable",valor).
-Las variables que pasen de JS a Tasker tienen que respetar todo lo relativo a su formato.
-El trasiego de arrays es un poco "especial". Es mejor evitarlos.

Si quieres quitar los espacio a ambos lados de una cadena puedes hacer esto...

str = " Hola ";
str = str.trim();
alert(str); << verás la cadena sin espacios

Si lo que quieres es comprobar si una cadena está vacía antes de hacer cualquier cosa con ella puedes hacer esto...

if (str>"") {acciones si contiene algo;}

...o esto otro...

if (str=="") {acciones si no contiene algo;}

En ambos casos puedes añadir un "else" para gestionar el caso contrario.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)

Última edición por WillyWeb Día 02/03/17 a las 12:11:26. Razón: Añadir más detalles
Responder Con Cita
Gracias de parte de:
  #8  
Viejo 02/03/17, 16:56:06
Array

[xs_avatar]
Caravantes Caravantes no está en línea
Usuario muy activo
· Votos compra/venta: (1)
 
Fecha de registro: feb 2011
Mensajes: 2,200
Modelo de smartphone: Samsung Galaxy S9
Tu operador: Lowi
 Cita: Originalmente Escrito por cace0353 Ver Mensaje
Eliminar espacio en blanco al principio de una cadena
Con Tasker puro y duro se podría intentar mediante la acción SECCIÓN DE VARIABLE, indicando que tome todos los caracteres a partir del segundo, y que lo haga (condición) si la variable equivale (~) a UN ESPACIO seguido de cualquier cosa. Pero surgen dos problemas.

1. Creo que no hay forma de decirle que tome (a partir del segundo carácter) todos los caracteres restantes. Hay que poner un número concreto, y si pones un número alto (más que la longitud de la cadena) entonces da error.

2. Al asignar valor a una variable se puede poner un espacio, o un espacio seguido de otros caracteres/variables, pero a la hora de poner una condición no se puede hacer eso. La condición es que la variable equivale (~) a un espacio seguido de un asterisco (ese asterisco representa cualquier cosa), pero Tasker no memoriza ese espacio inicial y por ese motivo la condición no funcionará. Para que funcione hay que utilizar una variable auxilar (%espacio) que contenga un espacio, y de esa forma ya es posible establecer la condición de que la variable a chequear equivalga a %espacio* (un espacio seguido de un asterisco que representa cualquier cosa).

O sea que finalmente necesitaríamos tres acciones. Supongamos que tu variable es %parte y quieres quitarle el espacio inicial, en el caso de que lo tenga.

1 Establecer variable %espacio a " " (un espacio, sin las comillas).
2 Probar variable, tipo Longitud, variable %parte, almacenar resultado en %longitud
3 Sección de variable %parte, desde 2, longitud %longitud-1, si %parte coincide con %espacio*

Supongo que con Javascript y/o con Regexp se podrá hacer mejor y más breve.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
Responder Con Cita
Gracias de parte de:
  #9  
Viejo 02/03/17, 17:05:34
Array

[xs_avatar]
WillyWeb WillyWeb está en línea ahora
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
Así a bote pronto, si la intención es usar sólo acciones de Tasker yo lo intentaría con "Buscar y Reemplazar" con una RegEx apropiada...

http://es.lmgtfy.com/?q=trim+with+regex
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
Los siguientes 2 usuarios han agradecido a WillyWeb su comentario:
  #10  
Viejo 02/03/17, 18:09:05
Array

[xs_avatar]
WillyWeb WillyWeb está en línea ahora
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
 Cita: Originalmente Escrito por cace0353 Ver Mensaje
En la obtención de las diferentes %parte pongo una condición Establecer Variable: %parte a " " (un espacio en blanco sin las comillas) si la variable no está asignada, ya que Tasker no me permite dejarla vacía.
Ahora que me fijo bien...

¿Por qué lo haces así? No des valor a la variable y luego gestiona si esa parte se añade al resultado final con un "IF %parte Ajustado".
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
Los siguientes 2 usuarios han agradecido a WillyWeb su comentario:
  #11  
Viejo 02/03/17, 22:56:41
Array

[xs_avatar]
cace0353 cace0353 no está en línea
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 504
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
Bueno, primero de todo agradecer vuestros intentos de ayuda...

Voy a intentar fijar más claramente el problema (que no és funcional sino sólo de visualización al mostrar los resultados en pantalla):

Se trata de una tarea para obtener la previsión del tiempo en función del lugar donde estés, en España, hecha a partir de la versión "clásica" que se publicó hace tiempo en el foro y que he ido mejorando compactando acciones usandó código JS e introduciendo consultas a una base de datos SQL para obtener los códigos INE a partir del código postal sacado con un HTTPget de la web de Google. Con el código INE y mediante un nuevo HTTPget de la web de AEMET obtengo las previsiones del tiempo para hoy y para mañana y preparo tres variables: %result_mati, %result_tarda y %result_vespre que contienen el texto que me aparecerá en pantalla y que está preparado para ser leído con una acción Decir.

(Para obtener las de mañana hago un nuevo barrido del resultado %HTTPD cortando en lugar de <dia fecha="%hoy"> en </dia> que es donde empieza la prevision de mañana y se genera otro juego de resultados)

El contenido de cada una de las tres variables contiene la previsión correspondiente al período. Por ejemplo, para la mañana, %result_mati contiene las previsiones del período de horas 06 a 12 y queda así: "Mañana: estado del cielo %cielom. Temperatura entre %tempm_min y %tempm_max grados. Viento de %ventm kilómetros por hora del %dirm. Probabilidad de lluvia del %lluviam %"

Monto las cadenas igualmente para la tarde y para la noche.

Como sabreis AEMET va vaciando de contenido los datos de horas cubiertas. Es decir que las variables parciales %cielom, %tempm_min, %tempm_max, %ventm, %dirm y %lluviam quedan vacias más o menos a partir del mediodia y se leerian como "tanto por ciento %cielom" etc.

Entonces, para poder componer el texto que se mostrará (y se leerá a voluntad mediante un botón de la escena) pongo condiciones IF para las previsiones para la mañana y para la tarde:

IF %hora < 12 | %Dema = 1
Establecer variable %result_mati A:Mañana: estado del cielo %cielom. Temperatura entre %tempm_min y %tempm_max grados. Viento de %ventm kilómetros por hora del %dirm. Probabilidad de lluvia del %lluviam % (Decir lee % como "tanto por ciento")
Else
Establecer variable %result_mati A: (un espacio, ya que no puedo dejar la asignación vacia
EndIf

IF %hora < 18 | %Dema = 1
Establecer variable %result_tarda A:Tarde:estado del cielo %cielot. Temperatura entre %tempt_min y %tempt_max... etc.
Else
Establecer variable %result_tarda A: (un espacio, ya que no puedo dejar la asignación vacia
EndIf

(%hora és una extracción con Separar Variable de %TIME para obtener sólo la hora
y %Dema es una variable global que hace que se muestren las previsiones para hoy o para mañana cambiando con un boton de la escena su valor a 1, en cuyo caso se mostrarán todas independientemente de la hora)

Al final del proceso compongo una variable %resultat_dia que contiene %result_mati %result_tarda %result_vespre en lineas separadas y se muestra en pantalla.

El problema aparece cuando no hay resultados de la mañana porqué son más de las 12 del mediodia: %result_mati = " " (un espacio en blanco por acción del Else...). Esto causa que no se muestre en pantalla nada para la mañana y aparezcan sólo los resultados de la tarde y de la noche. Por efecto de aquel espacio en blanco el texto de la previsión para la tarde queda un espacio hacia la derecha.
Si sólo hay resultado para la noche (a partir de las 18) entonces me aparecen dos espacios en blanco al principio de la linea...

----

Al final he resuelto el tema poniendo en las definiciones de %result_mati y %result_tarda una linea en blanco al final del texto y componiendo la variable %resultat_dia así: %result_mati%result_tarda%result_vespre. Los resultados se desplazan una línea hacia abajo, pero como sobra espacio (hay una o dos previsiones menos...) "no problem".
__________________
Me apasiona volar, pero con los pies en el suelo...

Última edición por cace0353 Día 02/03/17 a las 23:13:32.
Responder Con Cita
Los siguientes 2 usuarios han agradecido a cace0353 su comentario:
  #12  
Viejo 02/03/17, 23:33:39
Array

[xs_avatar]
Caravantes Caravantes no está en línea
Usuario muy activo
· Votos compra/venta: (1)
 
Fecha de registro: feb 2011
Mensajes: 2,200
Modelo de smartphone: Samsung Galaxy S9
Tu operador: Lowi
 Cita: Originalmente Escrito por WillyWeb Ver Mensaje
si la intención es usar sólo acciones de Tasker yo lo intentaría con "Buscar y Reemplazar" con una RegEx apropiada...
http://es.lmgtfy.com/?q=trim+with+regex

Que bueno
Eso sí que ha sido un enlace sutil
Algún día te haré caso
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
Responder Con Cita
Gracias de parte de:
  #13  
Viejo 02/03/17, 23:41:08
Array

[xs_avatar]
cace0353 cace0353 no está en línea
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 504
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
@Caravantes: no es la primera vez que lo hace… 😊
Es pura fidelidad a su firma en el foro!

Aunque, en el fondo, tiene razón…

Enviat des del meu Nexus 5 usant Tapatalk
__________________
Me apasiona volar, pero con los pies en el suelo...
Responder Con Cita
Gracias de parte de:
  #14  
Viejo 02/03/17, 23:56:23
Array

[xs_avatar]
WillyWeb WillyWeb está en línea ahora
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
 Cita: Originalmente Escrito por Caravantes Ver Mensaje
Eso sí que ha sido un enlace sutil
Es que no tenía tiempo de ponerme a buscarlo. Pero que os quede claro que esas cosas siempre las digo desde el cariño.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
Los siguientes 2 usuarios han agradecido a WillyWeb su comentario:
  #15  
Viejo 01/11/17, 19:55:07
Array

[xs_avatar]
ea8rx ea8rx no está en línea
Usuario muy activo
 
Fecha de registro: may 2011
Localización: Las Palmas de G.C.
Mensajes: 5,416
Modelo de smartphone: Pixel 8A, Samsung Galaxy Tab A7
Tu operador: Movistar
 Cita: Originalmente Escrito por cace0353 Ver Mensaje
No me he podido resistir:
Probado y funcionando…!

EDITO: No funciona. Cuando ayer hice la prueba inserté el código JS antes de la composición que hacía en Tasker puro y no borré estas acciones.
En la madrugada no hay resultados vacíos y, por tanto se vé bien. Esta mañana he borrado la parte en Tasker puro y la acción JS me devuelve %resultat.

Habrá que seguir probando…

Gracias!

Enviat des del meu Nexus 5 usant Tapatalk
Hola, ¿como saber la longitud de una cadena? Gracias.
Responder Con Cita
  #16  
Viejo 01/11/17, 20:00:48
Array

[xs_avatar]
WillyWeb WillyWeb está en línea ahora
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
 Cita: Originalmente Escrito por ea8rx Ver Mensaje
Hola, ¿como saber la longitud de una cadena? Gracias.
Acción de Tasker "Probar Variable".
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
Gracias de parte de:
  #17  
Viejo 01/11/17, 20:09:52
Array

[xs_avatar]
ea8rx ea8rx no está en línea
Usuario muy activo
 
Fecha de registro: may 2011
Localización: Las Palmas de G.C.
Mensajes: 5,416
Modelo de smartphone: Pixel 8A, Samsung Galaxy Tab A7
Tu operador: Movistar
 Cita: Originalmente Escrito por WillyWeb Ver Mensaje
Acción de Tasker "Probar Variable".
Gracias.
Responder Con Cita
Gracias de parte de:
  #18  
Viejo 02/11/17, 13:25:35
Array

[xs_avatar]
ea8rx ea8rx no está en línea
Usuario muy activo
 
Fecha de registro: may 2011
Localización: Las Palmas de G.C.
Mensajes: 5,416
Modelo de smartphone: Pixel 8A, Samsung Galaxy Tab A7
Tu operador: Movistar
 Cita: Originalmente Escrito por cace0353 Ver Mensaje
Un pequeño problema con los espacios en blanco: tengo una variable %resultado que compongo con otras variables obtenidas en distintas partes de la tarea: %parte1,%parte2,%parte3… (una por línea)

En la obtención de las diferentes %parte pongo una condición Establecer Variable: %parte a " " (un espacio en blanco sin las comillas) si la variable no está asignada, ya que Tasker no me permite dejarla vacía.

Esto motiva que en el texto visualizado final aparezcan espacios en blanco innecesarios al principio de algunas lineas que afean el resultado en pantalla.

Hay alguna solución o "truco" en Tasker o Javascript que resuelva el problema?

Enviat des del meu SM-T550 usant Tapatalk


Otra forma muy sencilla para solucionar este problema:

1º Con "Probar variable" se mide la longitud de la cadena a tratar almacenando su valor en %long (variable provisional).

2º Con "Sección de Variables", Desde: 2 y Longitud: %long-1. Almacenar Resultado en la misma variable de la cadena original o en otra nueva.

Agradecer a WillyWeb su ayuda en mi consulta para poder realizar el punto 1º.

Un saludo.
Responder Con Cita
Los siguientes 3 usuarios han agradecido a ea8rx su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Otro software para Android > Tasker



Hora actual: 00:45:59 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /