Ayuda, tinyDB a Spreadsheets

Saludos a toda la comunidad, vengo solicitando su ayuda para resolver mi problema, estoy creando una app personal para guardar datos a google sheets, he seguido los pasos de algunos usuarios y no resuelvo, cuando doy clic en el botón guardar todo va bien, me guarda los datos a tinyDB y me los muestra en la tabla, pero cuando doy clic en el botón enviar no me envía los datos a google sheets, subo imagen de los bloques que estoy usando tal vez alguien me pueda ayudar, muchas gracias



This looks wrong

Can you convert your blocks to English so we can see what you are doing ?

I do not see a web1.url block ?

Yes, sorry, here are the blocks in Englis
If you like I can share the aia file, I only have 3 screens configured at the moment,


h

Probably easier to send all the list data in one call ?

Hello TIM, I still have not been able to solve my problem, I share my aia file, and the script that I am using, I hope you can see the error I am making, the main idea is to save in the tinyDB and show me the table, that's it until then Well, (btnSave) and (btnSend) should send the saved data to the spreadsheet, but it doesn't send anything, it just sends me the notification.
Thanks in advance, I hope to solve it soon

CandyMielDC.aia (7.6 MB)

This is the script I am using

function doGet(e) {

var ss = SpreadsheetApp.openById("1p-9nKo99Oa3Mvb4IfY4LAtLAmK3ewEfUqUm7D99LEos");
var sh = ss.getSheetByName("Test2")

var FECHA = e.parameter.FECHA;
var APIARIO = e.parameter.APIARIO;
var COLMENAS = e.parameter.COLMENAS;
var ALZAS = e.parameter.ALZAS;
var CAMENCIM= e.parameter.CAMENCIM;
var HUERFANAS = e.parameter.HUERFANAS;
var FALTA = e.parameter.FALTA;
var OBSERVACION = e.parameter.OBSERVACION;
var MIEL = e.parameter.MIEL;
var PORCENTAJE = e.parameter.PORCENTAJE;

sh.appendRow([FECHA,APIARIO,COLMENAS,ALZAS,CAMENCIM,HUERFANAS,FALTA,OBSERVACION,MIEL,PORCENTAJE]);
return ContentService.createTextOutput("Success")
}

On reviewing your blocks, it seems that you will keep adding the same data over and over again?

When you create a new record, save just that record to your list, tinydb and spreadsheet at the same time.

Thanks for responding, any example of how to do it? I will capture the data in the mountains and there sometimes there is no network, for that reason I want to save the data to tinyDB and later to the spreadsheet, following your suggestion, could you show me where I should make my block change, please, thank you very much by the attention

There is a recent topic all about this. I will have to find it...

See here:

1 Like

Other:

1 Like

Hello everyone, I come again consulting, I left this project for a while due to time issues, it seems that I have found my problem when sending the data to google sheets, apparently it is due to the use of mathematical operations, I do not know if my blocks are the correct way, what I need is to give me the (percentage of the numbers in the Alzas textbox and Miel textbox and the result put it in the % textbox), I already have this done, and in the tableview it does show it, but when I want to send the data to google sheets it generates the error and does not send the data, and when I send data without the mathematical operation it does send the data without problems, how can I solve my problem? Thank you very much in advance, I remain attentive

These blocks I'm using

sending data without the mathematical operation

Here in the tableview it shows it correctly

La primera de todas las cuestiones es que no queda claro cual la función del aplicativo y cual la función de la Planilla. Si es la Planilla la herramienta principal que te va a dar el panorama de lo que se pasa, la necesidad de ver este porcentaje en el aplicativo se pone en jaque... pues no seria necesario...

Mas hay varios problemitas con tu código...

  • 1°: Si el Porcentaje es algo que va a ser calculado por una fórmula, en función de los valores de Alzas & Miel, no es necesario que este campo sea un TextBox. Los TextBoxs se destinan a datos que el usuario precisa inserir manualmente. Si el campo será calculado a partir de otros valores, debería ser apenas un Label.

  • 2°: Si hay la intención de que este porcentaje sea calculado automáticamente, tampoco hay necesidad de haber un comando '.RequestFocus' que traiga la atención para esto!

image

Ambos criterios (el mencionado en 1 y este) sugieren que es el usuario que irá informar este campo... y no que que irá a ser calculado automaticamente... algo que entra en contradicción en la lógica de la programación.

  • 3°: La cuenta del porcentaje solo es hecha cuando el TextoBox 'Miel' pierde el foco!

No hay NADA que verifique que el campo 'Alzas' ya fue introducido!

Esto significa que si el usuario deja Alzas en blanco y solo entra con el valor de Miel, la cuenta del porcentaje estará equivocada.

  • 4°: Hay una definición sospechosa de 'ReadOnly' en el Designer, que podría ser responsable por todo el problema...

Y para finalizar »

  • 5°: Por los datos que pasaste no hay como saber lo que está programado en la Planilla Google, en la columna J » Porcentaje

image

No hay como saber si aqui es esperado un dato exclusivamente numérico, un dato de texto... si hay una fórmula alli o no... si ya fue definido o formatado como una célula de porcentaje... etc...

Sin esta información, sin una planilla de ejemplo (para ver lo que hay alli), con el *.aia vacío de datos que anexaste y -mismo que tooodooos los datos que anteceden tu problema vengan a ser llenados manualmente- ante la imposibilidad de reproducir el error, de modo a verificar lo que pasa al enviar los datos para la Planilla, si hay mensajes o no, y ante la imposibilidade de poder ver la planilla después, no hay como constatar el problema real. De hecho, no quedó claro si hay un mensaje de error en algún lugar, o no!

Quien te dá un error?!?!

App inventor? Si si, qual?

Google Planilla te dá el error??!?

Entiendes la ausencia de datos que hace con que tu pregunta caiga en el olvido?!?!

Las hipótesis probables son:

Si Google te dá el error »

  • Es un campo numérico, programado con algún tipo de 'validación de datos'... y al enviarle un porcentaje ya calculado con un número y el símbolo "%" junto, podría ser esto causando el error!

  • Ya existe una fórmula protegida alli que está siendo sobre-escrita por un dato externo...

  • Es un campo de porcentaje, que no acepta un número y un símbolo %


Si MIT App Inventor2 te dá el error »

  • A partir del momento en que definiste que el TextBox Porcentaje es un campo 'ReadOnly' (solo para lectura) y después venís a modificar el valor de él con el resultado de una fórmula... el error debe aparercer apuntando esto, y debería haber un mensaje de error bien claro, que no fué capturado ni anexado aqui! Y que, hipoteticamente, debería aparecer así que el TextBox Miel pierde el foco... pero esto nunca fue dicho!

image


Por lo tanto, las sugestiones para que puedas resolve el problema, son:

  • Decidite si vas a querer que el campo Porcentaje sea calculado automaticamente en el aplicativo... o no... La Planilla podría cuidar de esto, si no es importante que el aplicativo te lo muestre.

  • En caso afirmativo, en vez de tener un TextBox, definilo como un Label.

  • En la fórmula que calcula el porcentaje, subtituye 'Set TBPorcentaje.Text' por el texto del Label que vas a crear... algo como » Set Lb_Porcentaje.Text

  • Eliminá el Comando 'Call TBPorcentaje.Request Focus... porque decididamente no será necesario atraer la atención para esto... mismo porque será un Label.

  • Conforme lo que está formatado en la Planilla Google, adaptá el valor que irá para ella al final. Pensá que, de hecho, podría apenas existir una fórmula en la planilla que pegue los valores de Alzas -en la columna D- y de Miel -en la columna I- y já haga la cuenta del porcentaje. En este caso, tal información no seria necesaria ser calculada por el aplicativo.

Si es muy muy importante que el aplicativo te muestre esa porcentaje, ANTES de enviar los datos para la Planilla retirá ese símbolo de %... que, talvez, sea él que está causando todo el problema! Hay otras formas de que el aplicativo te muestre el símbolo de porcentaje sin necesidad de anexarlo al campo que va para la planilla... podrías simplemente eliminar ese 'Join' que le agrega el %

  • Finalmente, al cambiar Porcentaje de TextBox para Label, no podrás definir esto como 'ReadOnly'... y si es apenas esta la cuestión, porque hubo una falta de atención al querer clickar sobre 'NumbersOnly' y fue clickado sobre 'ReadOnly' (que está luego abajo) solo por que ambos terminan en 'Only', el problema estará decididamente resuelto... y dejará un precendente inestimable que revela la necesidad de prestar atención al dar un único 'click' que puede sabotar todo tu código. ^^

Ahí, si esto te resuelve el problema, marcá la respuesta como 'Solución'.... si no te resuelve el problema, mandá un *.aia con todos los datos ya alimentados (de modo que pueda ser testado rapidamente), un accesso online con permisión para escribir en una planilla de testes compartida, y el link para una Planilla Google de testes (que puede ser una cópia ficticia) ya llena de datos, y que pueda ser consultada su formatación. Solo así que será posible alguien ayudarte. :pray:

Lito @>-->---

1 Like

Short answer: work with the underlying data lists in your app, without any percentage formatting.

1 Like

Muchas Gracias Lito, le comentó que mi problema era al enviar los datos guardados
en la tinyDB a google sheets, hice lo que usted me ha recomendado y efectivamente el problema era el símbolo % , ahora ya envío los datos a mi hoja de calculo pero ahora me salta el siguiente error cada vez que agregó un dato en el textbox (TBMiel)
error

cambie el siguiente bloque

no se si esto es lo que me está generando el error, pero aún así funciona la formula y me envía los datos

1 Like

Make sure the TBMiel.Texto and TBAlzas.Texto both have a number, not empty, not a text string.

1 Like

@YAMAHA_M06 Mandá el *.aia completo, con todas las modificaciones que hiciste...

Ahora...

@>-->---

Yo te había recomendado para que » *En la fórmula que calcula el porcentaje, subtituye 'el TextBox Set TBPorcentaje.Text' por el texto del Label que vas a crear... algo como » Set Lb_Porcentaje.Text

Mas cambiaste también las TextBoxs TBMiel & TBAlzas para Labels... que estaban ciertos como TextBoxs... y ahora no dá para saber lo que está alimentando estes Labels cuando llega ese evento... que, talvez, sea un Evento completamente desnecesario... :pray:

Entonces mandá el *.aia y no cambies más nada...

@>-->---

1 Like

CandyMielDC_tst.aia (7.6 MB)
ahi esta el aia

este es el script que estoy usando

function doGet(e) {

var ss = SpreadsheetApp.openById("1yOiTpAIvO3eZXc1PFK62-OH0mcU5vbnXvWsHq5B0p1M");
var sh = ss.getSheetByName("APIARIOS");

var FECHA = e.parameter.FECHA ;
var APIARIO = e.parameter.APIARIO ;
var COLMENAS = e.parameter.COLMENAS ;
var ALZAS = e.parameter.ALZAS ;
var CAMENC = e.parameter.CAMENC ;
var HUERFANAS = e.parameter.HUERFANAS ;
var FALTA = e.parameter.FALTA ;
var OBSERVACIONES = e.parameter.OBSERVACIONES ;
var MIEL = e.parameter.MIEL ;
var PORCENTAJE = e.parameter.PORCENTAJE ;

sh.appendRow([FECHA,APIARIO,COLMENAS,ALZAS,CAMENC,HUERFANAS,FALTA,OBSERVACIONES,MIEL,PORCENTAJE ]);
return ContentService.createTextOutput("Success" );

}

aquí la hoja de calculo

Thanks Kevin, I get that error when I put data in the TBMiel, but still the formula works fine, and if the TBMiel is left empty there is no error

@YAMAHA_M06 Hice unas modificaciones para abolir el error... que como te alerté, acontecería si el Campo 'Miel' fuese informado con el Campo 'Alzas' en blanco...

Quedó así el flujo »

  • Alzas precisa ser informado ANTES que Miel...

  • Si Alzas queda en blanco, ni es posible informar Miel, pues el TextBox correspondiente quedará invisible...

  • Si Miel es informado, el Porcentaje es calculado en tiempo real, durante la digitación...

  • Si después de haber sido informado Miel, Alzas es borrado, irá a cerar los Campos de Miel y Porcentaje, volviendo a estaca cero.

  • El Porcentaje solo será calculado cuando haya al menos un número en Alzas & un número en Miel... solo así que el error es evitado.

  • Se presupone que el valor de Alzas siempre será superior al de Miel... No habrá un error si esto es invertido, mas obtendrás un Porcentaje incoerente, mayor que 100%... y no hay nada que verifique esta posibilidad...

  • Porcentaje fue arredondado para 2 Casas Decimales... y va sin el símbolo % tanto para la Lista, TinyDB y para la Planilla Google.


El código »


Sigue el *.aia resuelto en anexo. Está funcionando bien la transferencia para tu Planilla. Testá todo... y no generes nuevos errores. Si alterás el código y surge un nuevo error, cargá el *.aia resuelto nuevamente.

Si, por acaso, venis a enfrentar alguna otra cuestión o algún otro error que no tenga que ver con el asunto de este tópico, postá la cuestión en inglés, con los bloques generados en inglés y encerrá este tópico, así los Power Users pueden también ayudarte. :pray:

CandyMielDC_Solved.aia (7.6 MB)

Lito @>-->---

Gracias Amigo Lito, ahora si trabaja el aplicativo, y también gracias a toda la comunidad, saludos y bendiciones

1 Like