Ver la Versión Completa : [ CONSULTA ] AutoSheets para registro de llamadas?
manupf23
24/06/21, 19:06:55
Se puede utilizar con la versión free de Autosheets para llevar un registro de llamadas?
Actualmente lo tengo por ifttt e integromat, pero fallan mucho...
Alguna forma de poder hacerlo con Tasker y Autosheets?
Un saludo!!
WillyWeb
26/06/21, 15:28:13
Nunca he usado Autosheets, pero siendo gratuito ¿qué te impide probarlo tú mismo?
:loco:
Aunque por lo que he visto no hace falta nada...
https://www.google.com/search?q=add+data+to+google+sheets+with+tasker
manupf23
27/06/21, 11:42:00
Nunca he usado Autosheets, pero siendo gratuito ¿qué te impide probarlo tú mismo?
:loco:
Aunque por lo que he visto no hace falta nada...
https://www.google.com/search?q=add+data+to+google+sheets+with+tasker
Ya he creado el perfil con ayuda.
No lo creaba porque la verdad es que no tenía ni idea de cómo crearlo jejeje.
Muchas gracias!
Caravantes
28/06/21, 01:52:45
Ya he creado el perfil con ayuda. No lo creaba porque la verdad es que no tenía ni idea de cómo crearlo jejeje. Muchas gracias!
La mejor forma de agradecerlo sería compartir aquí el perfil que has creado, para conocimiento y aprendizaje de otros foreros que puedan estar interesados en el tema.
manupf23
30/06/21, 22:49:59
La mejor forma de agradecerlo sería compartir aquí el perfil que has creado, para conocimiento y aprendizaje de otros foreros que puedan estar interesados en el tema.
Por supuesto!
Aquí os lo dejo, me ayudó un chico que es top en esto de Tasker.
Perfil: Terminar Llamada Etc (62)
Restore: no
Evento: Teléfono Inactivo
Entrada: Calllog (61)
A1: Pedir Permisos [ Permisos Requeridos:android.permission.READ_CALL_LOG ]
<date>
A2: Consulta SQL [ Modo:URI Formateado Archivo:content://call_log/calls Tabla: Columnas:date Consulta: Parámetros de Selección: Ordernar Por:date DESC Separador de Columna de Salida: Matriz de Variables (array):%date Usar Root:Apagado ]
<number>
A3: Consulta SQL [ Modo:URI Formateado Archivo:content://call_log/calls Tabla: Columnas:number Consulta: Parámetros de Selección: Ordernar Por:date DESC Separador de Columna de Salida: Matriz de Variables (array):%number Usar Root:Apagado ]
<duration>
A4: Consulta SQL [ Modo:URI Formateado Archivo:content://call_log/calls Tabla: Columnas:duration Consulta: Parámetros de Selección: Ordernar Por:date DESC Separador de Columna de Salida: Matriz de Variables (array):%duration Usar Root:Apagado ]
<type>
A5: Consulta SQL [ Modo:URI Formateado Archivo:content://call_log/calls Tabla: Columnas:type Consulta: Parámetros de Selección: Ordernar Por:date DESC Separador de Columna de Salida: Matriz de Variables (array):%type Usar Root:Apagado ]
A6: Establecer Variable [ Nombre:%type A:%type(1) Variables Recursivas:Apagado Calcular:Apagado Añadir:Apagado Dígitos de Redondeo Máximos:3 Structure Output (JSON, etc):Encendido ]
A7: Parse/Format DateTime [ Tipo de Entrada:Milliseconds Since Epoch Entrada:%date(1) Input Format: Input Separator: Output Format:dd/MM/yyyy HH:mm Output Format Separator: Formatted Variable Names: Obtener Todos los Detalles:Apagado Calcular:Apagado Output Offset Type:Ninguno Output Offset: ]
A8: Establecer Variable [ Nombre:%jsondate A:{"1": "Llamada entrante","2": "Llamada saliente","3": "Llamada perdida","5": "Llamada rechazada"} Variables Recursivas:Apagado Calcular:Apagado Añadir:Apagado Dígitos de Redondeo Máximos:3 Structure Output (JSON, etc):Encendido ]
A9: Establecer Variable [ Nombre:%tipo A:%jsondate[%type] Variables Recursivas:Apagado Calcular:Apagado Añadir:Apagado Dígitos de Redondeo Máximos:3 Structure Output (JSON, etc):Encendido ]
A10: Flash [ Texto:%formatted
%tipo
%duration(1)
%number(1) Largo:Apagado ]
A11: AutoSheets Add Rows [ Configuración:Spreadsheet ID: 13efIT58sTNZwYbk5qs-HSB4bWrvY6H6YZFVM41Xq3NQ
Data: %tipo, %number(1), %formatted, %duration(1)
Separator: ,
Row Separator:
Mode: Parsed Tiempo Límite (Segundos):60 Structure Output (JSON, etc):Encendido ]
WillyWeb
05/07/21, 15:20:57
Ahora que he tenido tiempo de estudiar la tarea he visto algunas cosas "ligeramente mejorables". Comenzaré comentando lo que hace cada acción de la tarea original...
Comprueba que Tasker tiene permiso para leer el registro de llamadas
Extrae la fecha de todas las llamadas del registro ordenadas por fecha y las guarda en el array %date
Extrae el número de todas las llamadas del registro ordenadas por fecha y las guarda en el array %number
Extrae la duración de todas las llamadas del registro ordenadas por fecha y las guarda en el array %duration
Extrae el tipo de todas llamadas del registro ordenadas por fecha y las guarda en el array %type
Guarda el tipo de la llamada más reciente %type(1) en %type
Convierte la fecha de la llamada más reciente %date(1) de epoch a un formato legible
Crea un array JSON con las equivalencias en texto de cada %type
Asigna a %tipo el equivalente en texto del tipo de la llamada más reciente %type=%type(1) usando el array JSON
Hace un flash con los valores obtenidos/convertidos
Guarda esos valores en una hoja de cálculo de GDrive usando el plugin AutoSheets
:pensando:
Lo primero que me ha llamado la atención es ese "Spreadsheet ID". Espero que no corresponda a un archivo real. :rolleyes:
La comprobación del permiso, aunque técnicamente impecable, en la práctica debería ser innecesaria si Tasker se instaló correctamente y se le dieron todos los permisos.
Luego está el tema de las consultas SQL. Mi registro de llamadas tiene más de 2500 entradas (sí, tengo un problema y me lo estoy tratando). Sacar 2500x4=10000 datos para quedarme con 4 es un desperdicio de recursos de proporciones bíblicas. :estrellas:
Mejorar eso de forma muy significativa solo requiere de un pequeño cambio en cada una de las cuatro consultas SQL para que queden así...
Consulta SQL [ ... Ordernar Por:date DESC LIMIT 1 ... ]
También se podrían sacar todos los datos con una sola acción SQL, aunque eso obligaría a separar los valores resultantes y se perdería algo de claridad para ganar solo un par de acciones, pero si alguien se aburre mucho... :silbando: << Está resuelto unos mensajes más abajo.
El formato de salida de la fecha también es mejorable si se le añaden los segundos ... dd/MM/yyyy HH:mm:ss
Y para terminar, la conversión de %type a texto también se puede simplificar un poquito. No entiendo la necesidad de usar un array JSON pudiendo usar uno normal, que además tiene un nombre poco acertado (%jsondate). Y luego me he dado cuenta de que solo se contemplan los valores 1/2/3/5 y los tipos posibles van de 1 a 7 (https://developer.android.com/reference/android/provider/CallLog.Calls#TYPE).
Aquí os dejo mi versión de esa misma tarea...
LeeRegistroLlamadasSQL (666)
A1: Consulta SQL [ Modo:URI Formateado Archivo:content://call_log/calls Columnas:date Ordernar Por:date DESC LIMIT 1 Matriz de Variables (array):%date ]
A2: Consulta SQL [ Modo:URI Formateado Archivo:content://call_log/calls Columnas:number Ordernar Por:date DESC LIMIT 1 Matriz de Variables (array):%number ]
A3: Consulta SQL [ Modo:URI Formateado Archivo:content://call_log/calls Columnas:duration Ordernar Por:date DESC LIMIT 1 Matriz de Variables (array):%duration ]
A4: Consulta SQL [ Modo:URI Formateado Archivo:content://call_log/calls Columnas:type Ordernar Por:date DESC LIMIT 1 Matriz de Variables (array):%type ]
A5: Parse/Format DateTime [ Tipo de Entrada:Milliseconds Since Epoch Entrada:%date1 Output Format:dd/MM/yyyy HH:mm:ss Formatted Variable Names:%fecha ]
A6: Establece Array [ Matriz de Variables (array):%tipo Valores:Entrante,Saliente,Perdida, Buzón,Rechazada,Bloqueada,Externa Separador:, ]
A7: Flash [ Texto:%fecha↵%number1↵%duration1↵%tipo(%type1) Largo:Encendido ]
A8: PLUGIN
Caravantes
06/07/21, 01:12:24
Ahora que he tenido tiempo de estudiar la tarea he visto algunas cosas "ligeramente mejorables". Comenzaré comentando lo que hace cada acción...
Muchas gracias Willy, por ese post que complementa y afina la tarea de Manu. Excelente.
Osconse
06/07/21, 08:50:09
Que grandes sois los dos!!
Por aquí sigo, con muchas dudas, pero tengo un proyecto que me tiene un poco apartado. En cuanto tenga hueco vuelvo al ataque. No os habéis librado de mi!!! 😂😂😂😂😂😂
manupf23
06/07/21, 09:03:20
Ahora que he tenido tiempo de estudiar la tarea he visto algunas cosas "ligeramente mejorables". Comenzaré comentando lo que hace cada acción...
Comprueba que Tasker tiene permiso para leer el registro de llamadas
Extrae la fecha de todas las llamadas del registro ordenadas por fecha y las guarda en el array %date
Extrae el número de todas las llamadas del registro ordenadas por fecha y las guarda en el array %number
Extrae la duración de todas las llamadas del registro ordenadas por fecha y las guarda en el array %duration
Extrae el tipo de todas llamadas del registro ordenadas por fecha y las guarda en el array %type
Guarda el tipo de la llamada más reciente %type(1) en %type
Convierte la fecha de la llamada más reciente %date(1) de epoch a un formato legible
Crea un array JON con las equivalencias en texto de cada %type
Asigna a %tipo el equivalente en texto del tipo de la llamada más reciente %type(1) usando el array JSON
Hace un flash con los valores obtenidos/convertidos
Guarda esos valores en una hoja de cálculo de GDrive usando el plugin AutoSheets
:pensando:
Lo primero que me ha llamado la atención es ese "Spreadsheet ID". Espero que no corresponda a un archivo real. :rolleyes:
La comprobación del permiso, aunque técnicamente impecable, en la práctica debería ser innecesaria si Tasker está correctamente instalado y se le han dado todos los permisos.
Luego está el tema de las consultas SQL. Mi registro de llamadas tiene más de 2500 entradas (sí, tengo un problema y me lo estoy tratando). Sacar 2500x4=10000 datos para quedarme con 4 es un desperdicio de recursos de proporciones bíblicas. :estrellas:
Mejorar eso de forma muy significativa solo requiere de un pequeño cambio en cada una de las consultas SQL para que queden así...
Consulta SQL [ ... Ordernar Por:date DESC LIMIT 1 ... ]
También se podrían sacar todos los datos con una sola acción SQL, aunque eso obligaría a separar los valores resultantes y se perdería algo de claridad para ganar solo un par de acciones, pero si alguien se aburre mucho... :silbando:
El formato de salida de la fecha también es mejorable si se le añaden los segundos ... dd/MM/yyyy HH:mm:ss
Y para terminar, la conversión de %type a texto también se puede simplificar un poquito. No entiendo la necesidad de usar un array JSON pudiendo usar uno normal y que además tiene un nombre poco acertado (%jsondate). Y luego me he dado cuenta de que solo se contemplan los valores 1/2/3/5 y los posibles van de 1 a 7 (https://developer.android.com/reference/android/provider/CallLog.Calls#TYPE).
Aquí os dejo mi versión de esa misma tarea...
LeeRegistroLlamadasSQL (666)
A1: Consulta SQL [ Modo:URI Formateado Archivo:content://call_log/calls Columnas:date Ordernar Por:date DESC LIMIT 1 Matriz de Variables (array):%date Usar Root:Apagado ]
A2: Consulta SQL [ Modo:URI Formateado Archivo:content://call_log/calls Columnas:number Ordernar Por:date DESC LIMIT 1 Matriz de Variables (array):%number Usar Root:Apagado ]
A3: Consulta SQL [ Modo:URI Formateado Archivo:content://call_log/calls Columnas:duration Ordernar Por:date DESC LIMIT 1 Matriz de Variables (array):%duration Usar Root:Apagado ]
A4: Consulta SQL [ Modo:URI Formateado Archivo:content://call_log/calls Columnas:type Ordernar Por:date DESC LIMIT 1 Matriz de Variables (array):%type Usar Root:Apagado ]
A5: Parse/Format DateTime [ Tipo de Entrada:Milliseconds Since Epoch Entrada:%date1 Output Format:dd/MM/yyyy HH:mm:ss Formatted Variable Names:%fecha ]
A6: Establece Array [ Matriz de Variables (array):%tipo Valores:Entrante,Saliente,Perdida,Buzón,Rechazada, Bloqueada,Externa Separador:, ]
A7: Flash [ Texto:%fecha / %number1 / %duration1 / %tipo(%type1) Largo:Encendido ]
A8: PLUGIN
Que maravilla Willy, muchas gracias!
De momento no tengo nivel para entender todo lo que explicas a la primera, pero voy a duplicarlo y probar y entender los cambios que me comentas para mejorarlo.
De nuevo, muchas gracias!
WillyWeb
09/07/21, 10:39:12
También se podrían sacar todos los datos con una sola acción SQL, aunque eso obligaría a separar los valores resultantes y se perdería algo de claridad para ganar solo un par de acciones, pero si alguien se aburre mucho... :silbando:
Vale, ya lo hago yo. :rolleyes:
La tarea original saca cada dato con una consulta y resulta que se pueden saca todos de una vez...
LeeRegistroLlamadasSQL (999)
A1: Consulta SQL [ Modo:URI Formateado Archivo:content://call_log/calls Columnas:date,type,number,duration Ordernar Por:date DESC LIMIT 1 Separador de Columna de Salida:| Matriz de Variables (array):%sql ]
A2: Establece Array [ Matriz de Variables (array):%dato Valores:%sql1 Separador:| ]
A3: Parse/Format DateTime [ Tipo de Entrada:Milliseconds Since Epoch Entrada:%dato1 Output Format:dd/MM/yyyy HH:mm:ss Formatted Variable Names:%fecha ]
A4: Establece Array [ Matriz de Variables (array):%tipo Valores:Entrante,Saliente,Perdida, Buzón,Rechazada,Bloqueada,Externa Separador:, ]
A5: Flash [ Texto:%dato()↵%fecha↵%tipo(%dato2)↵%dato3↵%dato4 Largo:Encendido ]
El resultado sigue siendo un array, pero cada elemento contiene el valor de todos los campos concatenados con el "Separador de Columna de Salida" elegido (A1). Si luego creas un array a partir de esa lista de valores usando el mismo "Separador" (A2) ya tienes cada dato solicitado listo para ser usado en el resto de la tarea.
Esto tiene una ventaja adicional, además de mejorar la velocidad de la tarea al reducir el número de acciones y hacer una sola "Consulta SQL". Si quisiera sacar un dato más solo tendría que añadirlo a la lista de "Columnas" de A1 tal que así ... Columnas:date,type,number,duration,name ... y después de A2 estaría disponible en %dato5.
Era muy fácil. :silbando:
Osconse
09/07/21, 11:32:12
😂😂😂😂😂😂
manupf23
12/07/21, 16:31:07
Vale, ya lo hago yo. :rolleyes:
La tarea original saca cada dato con una consulta y resulta que se pueden saca todos de una vez...
LeeRegistroLlamadasSQL (999)
A1: Consulta SQL [ Modo:URI Formateado Archivo:content://call_log/calls Columnas:date,type,number,duration Ordernar Por:date DESC LIMIT 1 Separador de Columna de Salida:| Matriz de Variables (array):%sql ]
A2: Establece Array [ Matriz de Variables (array):%dato Valores:%sql1 Separador:| ]
A3: Parse/Format DateTime [ Tipo de Entrada:Milliseconds Since Epoch Entrada:%dato1 Output Format:dd/MM/yyyy HH:mm:ss Formatted Variable Names:%fecha ]
A4: Establece Array [ Matriz de Variables (array):%tipo Valores:Entrante,Saliente,Perdida, Buzón,Rechazada,Bloqueada,Externa Separador:, ]
A5: Flash [ Texto:%dato()↵%fecha↵%tipo(%dato2)↵%dato3↵%dato4 Largo:Encendido ]
El resultado sigue siendo un array, pero cada elemento contiene el valor de todos los campos concatenados con el "Separador de Columna de Salida" elegido (A1). Si luego creas un array a partir de esa lista de valores usando el mismo "Separador" (A2) ya tienes cada dato solicitado listo para ser usado en el resto de la tarea.
Esto tiene una ventaja adicional, además de mejorar la velocidad de la tarea al reducir el número de acciones y hacer una sola "Consulta SQL". Si quisiera sacar un dato más solo tendría que añadirlo a la lista de "Columnas" de A1 tal que así ... Columnas:date,type,number,duration,name ... y después de A2 estaría disponible en %dato5.
Era muy fácil. :silbando:
Fácil dice... Jajajajajaja
WillyWeb
12/07/21, 19:31:34
Fácil dice... Jajajajajaja
¿No te lo parece? :oh:
Sacamos todos los datos que interesan con una sola consulta SQL.
La consulta devuelve los datos en una cadena de valores concatenados, así que los separamos creando un array.
Convertimos el dato de la fecha a algo legible.
Convertimos el dato del tipo de llamada a algo legible.
... y listo.
¿Lo quieres complicar?
Convierte el dato de la duración (segundos) a algo más "práctico" ... por ejemplo a hh:mm.ss
:rolleyes:
vBulletin® v3.8.1, Copyright ©2000-2026, Jelsoft Enterprises Ltd.