No video

Conectar una aplicación web con Google sheets TUTORIAL PASO A PASO

  Рет қаралды 25,530

Punto Json

Punto Json

Күн бұрын

Vamos a conectar nuestra aplicación web javascript con Google Sheets, en el proceso vamos a crear una "organización" en google y también habilitaremos las APIs necesarias.
En el ejemplo que muestro la idea sería que una persona esté a cargo del sheets y el técnico solo vea lo que le muestra el servicio web.
Aclaración:
* La clave de API no deberían de ponerla en ningún lugar que el usuario lo pueda leer, por lo cual no se recomienda dejarlo como un string (como hice yo), sino que hay que agregarlo como variable de entorno dentro de un servidor. (Que no se pueda ni leer mirando el código fuente del front).
Copiate mi repo: github.com/cac...
Guía de inicio rápido de Google: developers.goo...
Pasos resumidos:
- Crear proyecto en Google
- Crear pantalla de consentimiento OAuth
- Agregar usuario de prueba
- Hablitar API sheets console.cloud....
- Crear Clave API, con restricción a sheets
- Crear ID Cliente OAuth2, con URI 127.0.0.1:5500 o la de su proyecto.
- Copiarse el código de ejemplo
- emplazar el CLIENT_ID y el SECRET
- Llevar todo el script a otra página
- Reemplazar los eventos onload de gapi y gis por eventsListeners en JS
- Adaptar "a gusto y piacere"
Timestamps:
0:00:00 - De donde arrancamos
0:02:19 - Configuración en google y en nuestro proyecto
0:11:46 - Lectura de sheets
0:26:47 - Escritura de sheets
0:35:35 - Pedido

Пікірлер: 155
@user-xh1zf3nr3p
@user-xh1zf3nr3p Жыл бұрын
Muchas gracias, no solo aprendí como conectar sheets, sino también me resolvió muchas dudas que tenia de JavaScript. Muy claro y al punto. Saludos
@puntojson
@puntojson Жыл бұрын
Gracias!!!! Me voy a seguir esforzando para traer contenido así..
@agustinlabattaglia6441
@agustinlabattaglia6441 19 күн бұрын
Uff tremendo video, justo lo que necesito. Estoy creando una app para llevar el inventario de la carpinteria en la que trabajo y me bancan que estudie a la vez y esto me viene perfecto. Ahora a enrroscarme para hacerlo andar en Angular y hacer el .put muchas gracias brodi!!!
@puntojson
@puntojson 19 күн бұрын
De nada don Bata! Conectarlo con Angular es molesto porque no podés usar la librería de nodeJs y hay que hacerlo basado en este proyecto. Para hacer que las variables gapi y gsi (creo que uso las 2 en este video) estén disponibles, tenés que declarar variables globales con esos nombres, así typescript no se queja de usar variables que no declaraste en ningún lado (porque se crean cuando importás las librerías). Suerte con eso! Cualquier cosa preguntame por acá o en el canal de discord.
@daniel_toro_programacion
@daniel_toro_programacion 15 күн бұрын
@@puntojson Por que no se puede usar Node? solo se pueden usar cliente side ?
@puntojson
@puntojson 12 күн бұрын
@@daniel_toro_programacion Si quisieras usar la librería de node en una SPA tendrías que publicar tu clave secreta. La librería de node está hecha para trabajar en backend donde el usuario no puede meterse, si metés eso en frontend comprometés no sólo la seguridad de tu api, sino que hasta te puede generar cargos en tu cuenta de Google ($). Tenés que usar alguna configuración que no sea 100% client-side para poder hacer una conexión de largo plazo con la Google API.
@ramoniniguez8970
@ramoniniguez8970 Жыл бұрын
Hola Punto Json, qué buena información que gentilmente brindás, en esto soy un aprendíz y me ayudás mucho con este video. Voy a escribir a tu correo por unas consultas si podés me respondés. Me encanta esto. Felicitaciones por difundir estos temas. Gracias totales. Un abrazo desde Salta Argentina.
@puntojson
@puntojson Жыл бұрын
Buenas! Gracias por el lindo mensaje 😊 Escribime si querés a contacto@puntojson.com Saludos desde Santa Fe
@acelgacosmica7626
@acelgacosmica7626 11 күн бұрын
Este video me acompaña de la manito y explicas sólo lo que necesito saber, sin ir por tangentes. Un tutorial de la san puta
@puntojson
@puntojson 11 күн бұрын
Gracias acelga! Me puso muy contento leerte 😊
@nico12136
@nico12136 2 ай бұрын
Increíble video, excelente explicación. Todo muy claro. Muchas gracias!
@puntojson
@puntojson 2 ай бұрын
Me alegro de que te haya sido claro! Gracias por comentar :)
@factorindustriacolombiana
@factorindustriacolombiana 6 ай бұрын
muy genial, muchas gracias, no sabia que google tenia una api, cada vez me interesa mas ese tema, y cada vez se pone mas complejo, pero mas genial
@puntojson
@puntojson 2 ай бұрын
Google tiene DE TODO. Muchísimas apis para de todo. Pero ojo que tiene tanto que te puede marear, andá investigando cuando tengas las necesidades de hacerlo!
@gustavoadolfogomezsandoval1246
@gustavoadolfogomezsandoval1246 9 ай бұрын
Maravilloso video, muy explicado al detalle, muchas gracias
@puntojson
@puntojson 9 ай бұрын
Graciass!
@moyPc2024
@moyPc2024 Жыл бұрын
Es justo lo que buscaba CRACK! gracias.
@puntojson
@puntojson Жыл бұрын
Gracias a vossss
@sarkastherin
@sarkastherin 10 ай бұрын
Hola, me acabo de encontrar con este canal, explicas muy bien, te felicito. Yo tengo tiempo trabajando con Google Sheet, y hasta hace poco solo habia logrado crear aplicativo solo con Google Apps Script, hace poco comencé a explorar lo de la API de Google Sheet, lo que no he podido hacer es usar una "cuenta de servicio" en vez del todo ese proceso de autorización, ya que me parece un poco invasivo otorgar permisos de "modificar todas tus hojas de calculo" cuando la verdad no lo necesito, ya que solo quiero que se modifique una hoja de calculo, supongamos de mi propiedad. Entonces por lo que leí, si la aplicación no requiere usar datos del usuario se puede usar una "cuenta de servicio", pero la verdad no he llegado a enteder como generar eso en código.
@puntojson
@puntojson 10 ай бұрын
Buenas! Hace ya varios años lo hice a eso, de la siguiente manera, puede ser que sea levemente distinto : Creé un usuario desde la consola de Google que es un usuario de sistema, o un usuario qué tiene un usuario y un token de acceso. Después desde la hoja de cálculo que quiero usar ponía compartir y ponía con permisos de edición al usuario qué creé en el paso anterior. Después usaba el usuario y token para autenticarme y hacer cambios en ese sheet. Todo eso lo hice en su momento con python y al día de hoy sigo usando esas herramientas para mi trabajo por lo que sé que todavía el método funciona. Tendría únicamente qué ver como hacerlo desde js
@alefalcone3680
@alefalcone3680 6 ай бұрын
Flaco sos un genio. Hermoso video
@puntojson
@puntojson 2 ай бұрын
Gracias Ale :D
@xxcharlesxx4346
@xxcharlesxx4346 Жыл бұрын
amigo videos de este tipo así seria genial que siguieras haciendo como para reservas y eso un estilo asi
@puntojson
@puntojson Жыл бұрын
No estaría mal un proyecto con un sistema de reservas y turnos! Muy interesante!!
@AsistenteVirtual-vn9jz
@AsistenteVirtual-vn9jz Жыл бұрын
Totalmente de acuerdo, de igual manera te agradeceríamos demasiado que pudieras conectarlo con un sistema de compra y venta, con todo y el proceso de carrito de compra y venta final por medio de tarjeta o efectivo. Siempre conectando como base de datos a GoogleSheets y siendo el punto principal la AUTOMATIZACIÓN
@alecobos06
@alecobos06 Ай бұрын
tremendo video!!!! Muchas gracias!
@puntojson
@puntojson Ай бұрын
Gracias a vos por pasarte Ale!
@orioltorrentscabestany9115
@orioltorrentscabestany9115 8 ай бұрын
muchas gracias por compartir!!!!! Muy instructivo...
@puntojson
@puntojson 8 ай бұрын
Gracias por pasarte y comentar!
@fernandolopez8187
@fernandolopez8187 4 ай бұрын
Gracias. La verdad que se entendió perfectamente
@puntojson
@puntojson 2 ай бұрын
De nada! :)
@benjaminmunoz1481
@benjaminmunoz1481 7 ай бұрын
Grias maquina!! el video me ayudo un monton!!
@puntojson
@puntojson 7 ай бұрын
De nada! Gracias a vos por mirar!
@sabripereira
@sabripereira Жыл бұрын
Excelente video! Gracias 🥰🥰
@puntojson
@puntojson Жыл бұрын
😊😊
@fernandorivass.3725
@fernandorivass.3725 7 ай бұрын
Muchas gracias.
@puntojson
@puntojson 7 ай бұрын
Gracias a vos por pasarte y comentar!
@valentinstj8156
@valentinstj8156 Ай бұрын
genial, hay una forma de no tener que logearse, es decir que no haya que dar autorización de google, que simplemente con entrar a la web me carguen los datos, mi idea es hacer una pagina de tiendas pero estas tienen que sacar información de un sheet, cada tienda tendría su sheet y asi poder insertar o quitar productos fácil
@puntojson
@puntojson Ай бұрын
Desde front-end directamente solo se puede si el sheets está público. En ese caso tendrías que cargar el sheets en csv con un fetch (sin usar Google api) y usar esa data. Sino necesitás un server de node js o de cualquier otra tecnología, ahí se puede leer hojas privadas con Google apis y una service account.
@valentinstj8156
@valentinstj8156 Ай бұрын
@@puntojson claro, la idea es ponerlo en publico para leer si y ya desde el sheet dar permiso a quien puede editarlo, lo voy a intentar asi
@JorgeGuzman-be4pp
@JorgeGuzman-be4pp 2 ай бұрын
¿Crear un proyecto en Google Cloud Para estos fines es Gratis?. ¡Muy bueno el video por cierto.!, resuelve muchisimas dudas.
@puntojson
@puntojson 2 ай бұрын
Si! Es gratis hasta un límite de uso mensual, que es altísimo. No estoy seguro de que esto sea técnicamente Google cloud, creo que lo que ellos llaman cloud a los servidores virtuales (no estoy seguro).
@JorgeGuzman-be4pp
@JorgeGuzman-be4pp Ай бұрын
@@puntojson Te agradezco tu respuesta
@juanmanuelburdet9699
@juanmanuelburdet9699 Жыл бұрын
Me acabo de enganchar con la buena onda del canal Calo, aprovecho y te consulto por una pista sobre un tema de Google apps Script, en Calendar, se puede asociar la ejecucion de una function creada, a momento de producirse el evento, porque si atraves de los disparadores o activadores reconoce los eventos de calendar Crear, modificar o eliminar el evento, pero no logro encontrar nada respecto al momento de llegado el momento, mas alla de la generacion propia de la notificacion del evento. Mil gracias por una pista. Te voy a estar siguiendo, 😜
@puntojson
@puntojson Жыл бұрын
Buenas! Mirá, estoy pensando tu problema y se me ocurre algo, pero no sé que tanto se amolda a tu problema específico. Por lo que leí acá developers.google.com/apps-script/guides/triggers?hl=es-419 parece que no hay un activador para "cuando un evento de calendario sucede", PERO hay para cuando se crea o se edita un evento. Por lo cual, estoy pensando que quizás tenés que tener un bot que cuado escucha el activacor de ON_EVENT_UPDATED para ver la fecha del evento y automatizar la ejecución de tu función para ese momento. Eso sí, tendrías que guardar en algún lugar el ID del evento por si el mismo se modifica o se borra, así borrás la automatización que dejaste planeada, lo cual no creo que lo puedas hacer con Google Scripts. Se me ocurre sino que para solucionar ese problema te tendrías que hacer una pequeña app en Node.js o con lo que te manejes que tenga guardados todos los eventos futuros y que ejecute lo que tengas que ejecutar, pero sin Google Scripts. ¿Me hice entender? Cualquier cosa preguntame!
@Rafelange
@Rafelange 6 ай бұрын
gracias mr. beast argentino programador.
@puntojson
@puntojson 2 ай бұрын
Mmm podría hacer un sorteo de un millón de dólares..... Tendría que juntar el millón primero, pero después podría!
@AsistenteVirtual-vn9jz
@AsistenteVirtual-vn9jz Жыл бұрын
Muchísimas gracias, si pudieras subir algún tutorial para poder conectar la base de datos de wordpress para que cada vez que realice un cambio en GoogleSheets se refleje en wordpress y viceversa te lo agradecería infinitamente 🙏🏼🥺
@puntojson
@puntojson Жыл бұрын
Buenas! La verdad es que no tengo demasiada idea de como hacer eso. Principalmente porque no escribo en PHP (el lenguaje en el cual se programa en wordpress). Sin embargo se me ocurren un par de maneras de encarar el problema si lo hacés a mano: 1) Hacer todo desde wordpress: Escribir en tu servidor PHP un script que cada X tiempo revise si hay algo nuevo en el sheets y lo agrega a la BD, y que cada vez que vos hagas un cambio desde wordpress que se agregue a sheets. 2) Hacer todo desde Sheets, para esto habría que usar Google App Scripts (que es casi javascript), en donde creás código para que cuando aprietes un botón se haga una sincronización con Wordpress. 3) Hacer un programa aparte, en el lenguaje que sepas, que monitoree el sheets y la BD de wordpress para revisar constantemente si hubo algún cambio y replicarlo en el otro lado. 4) Si querés que todo esté sincronizado a tiempo real, entonces necesitarías 2 scripts, uno en wordpress que actualice el sheets cuando hacés un cambio y uno en google sheets para que actualice el wordpress cuando hacés un cambio. Pero si no te molesta hacerlo con herramientas externas, el proceso es muchísimo más sencillo, se pueden hacer automatizaciones con Zapier o herramientas similares: zapier.com/apps/wordpress/integrations/google-sheets?gad=1&gclid=CjwKCAjw4ZWkBhA4EiwAVJXwqTDdBO4W3wiMF-2-9zO68k14fgOLhuR8gaGy-a7P_R76DEQkZ8-k8xoCW7kQAvD_BwE Espero que todo esto te sirva! Saludos!
@AsistenteVirtual-vn9jz
@AsistenteVirtual-vn9jz Жыл бұрын
@@puntojson muchísimas gracias, espero poder desarrollarlo y en cuanto lo tengan se lo comparto para que usted pueda compartirlo con todos e incluso mejorarlo.
@puntojson
@puntojson Жыл бұрын
Increíble
@user-ki8oy7ir7d
@user-ki8oy7ir7d 10 ай бұрын
Genial idea, igual necesito lo mismo, espero pronto encontrar algún vídeo sobre ello. 🎉
@eduardohernanguerrerodextr3899
@eduardohernanguerrerodextr3899 Жыл бұрын
Gracias crack!
@puntojson
@puntojson Жыл бұрын
A su servicio 😊
@giovannyaguilarrojas2434
@giovannyaguilarrojas2434 Ай бұрын
Muy bueno el video, Gracias por compartir. una consulta, Con Angular usando TS. como seria la conexión Auth? Gracias.
@puntojson
@puntojson Ай бұрын
Buenas! La manera más irresponsable y fácil es haciendo todo lo mismo (cargando el script en html) y crear una variable global en el app.ts con el nombre de la librería, le podés poner tipo any o descargarte la definición de tipos que haya hecho otro. Después podés acceder desde todos los componentes o servicios a la api sin que te moleste typescript.
@user-cc1bd2rp3t
@user-cc1bd2rp3t 3 ай бұрын
Me encantó el video, resolvió en gran parte dudas que tenia. He visto que el front lo ejecutas de manera local, entonces le das tu IP a OAuth para poder realizar las peticiones. Yo quiero hacer un front el cual muestre (solo seria printado de datos, no tendría más operaciones) las estadísticas de cada jugador de una liga de fútbol barrial que tenemos en un sheets (esta web seria de acceso publico), de este modo debería de hacer algún tipo de configuración diferente a la hora de autorizar un origen de javascript con OAuth? Muchas gracias por tu contenido
@puntojson
@puntojson 2 ай бұрын
Buenas! Sí, tenés que primero hostear la página y luego ver que IP tiene asignado, lo podés hacer desde el inspector del navegador (viendo de donde vienen los recursos), después ponés esa IP en la lista de orígenes permitidos. Saludos!
@javiermerida8536
@javiermerida8536 Жыл бұрын
Faaaaaa, listo para conseguir trabajo
@puntojson
@puntojson Жыл бұрын
Te aseguro que si en tu portfolio metés algo así tus chances de encontrar laburo suben una banda. Más allá de eso, te sirve para empezar a venderte particular!
@burgosUc83
@burgosUc83 7 ай бұрын
Excelente video, de casusalidad tienes info de como usar la información desde una googlesheet para generar graficos e indicadores para desarrolla una dashboard. Seria de gran ayuda saludos
@puntojson
@puntojson 7 ай бұрын
Buenas! Para eso deberías obtener los datos tal cual lo hacemos acá, y después hay que pasarle el control de crear los gráficos a otra librería, como puede ser Chartjs, Taucharts, Britecharts, etc... Lamentablemente no tengo ningún video en el tema (me lo anoto). Lo que quiero que te quede claro es que para hacer gráficos de manera sencilla vas a necesitar una librería dedicada sí o sí.
@gustavoadolfogomezsandoval1246
@gustavoadolfogomezsandoval1246 9 ай бұрын
Tengo una pregunta, es posible consultar una fila teniendo en cuenta un dato especifico ubicado en una columna? Algo asi cono un SELECT * FROM Turnos WHERE nombre = "juan"??
@puntojson
@puntojson 9 ай бұрын
Si! De hecho hay una manera en donde la consulta estilo sql la podemos poner en la url de la sheet que vamos a consultar, enviando un parámetro "q" (de query) En la url. Lo usé hace como 1 mes asique está vigente. No estoy como para revisarlo ahora porque no estoy en casa pero buscalo qué existe..!
@BaltazarGandolfo
@BaltazarGandolfo 2 ай бұрын
Buenas, como estas? Tengo un error cuando le doy al botón de autorizar, directamente no me funciona. A alguien le paso lo mismo? Necesito solucionarlo lo antes posible
@puntojson
@puntojson 2 ай бұрын
Buenas! Perdón la tardanza. Me decís que error tenés? Sin eso se complica bastante!
@asrobotnik
@asrobotnik 4 ай бұрын
Gran tutorial! Muchas gracias! Si en lugar de tener el index.html en local, lo tuviera alojado en google sites por ejemplo, cómo debería configurar las credenciales de OAuth 2.0? He probado copiando el código de ejemplo de la guía de inicio rápido con JavaScript en una sección de mi página de google sites y cuando presiono en autorizar siempre me da error de "redirect_uri_mismatch"
@puntojson
@puntojson 2 ай бұрын
Si google sites tiene un IP dinámico entonces es algo que no podrías hacer directo desde front end, sino que tendrías que usar un backend con una direción IP estática. Ahora, si resulta que google sites sirve tu página siempre desde el mismo IP, podés entrar a tu google sites y revisar que dirección IP está usando, y usar esa para configurar las credenciales.
@agustinsosa8593
@agustinsosa8593 7 ай бұрын
che me encanto pero vos sabes que en el minuto 14:56 cuando decis que "Las funciones que se pasan como argumento a los parentesis addEventListener deberian no tener los parentesis" bueno justamente cuando ponia eso sin parentesis hacia que no se vieran los botones de auth. Y en al consola no tiraba error btw de ningun tipo.
@puntojson
@puntojson 7 ай бұрын
mmmmmmmmmm que quede este comentario por si hay gente con el mismo problema! A mí obviamente me funcionó como lo hice en el video :/
@agustinsosa8593
@agustinsosa8593 7 ай бұрын
@@puntojson igual por las dudas yo soy re nuevo en esto de programacion. Recien estoy empezando con las apis y demas jajajaja asi que no se fien de mi ahre gracias por el tuto esta genial!!!!
@IsaacAvila-bh4oz
@IsaacAvila-bh4oz 2 ай бұрын
holaaa tengo una duda, primero que todo tu video me ayudo muchisimo y gracias, pero he creado un formulario y me funciona perfecto en la web del pc, puedo ver informacion del sheets, editar, agregar, eliminar y mas, pero el problema es que al ejecutarlo en la web de un celular despues de publicarlo no funciona, no se me activa la pestaña de concentimiento de ninguna forma, eh intentado hasta agergarlo en un boton para que se ejecute y nada, sabras tu que pueda ser o como poder solucionarlo, solo necesito que funcione en el celular y tendre todo resuelto, espero puedas ayudarme, muchas gracias!!!
@puntojson
@puntojson 2 ай бұрын
Buenas! Vamos a ver si podemos obtener un poco más de información del problema a ver si vemos para donde arrancamos a solucionarlo. 1) ¿La ventana emergente se abre en PC cuando tenés el "modo celular" activado en las devtools? Para emular lo que haría un teléfono 2) ¿No tendrás algún adblocker o bloqueador de ventanas emergentes en el celu? Para descartar un teléfono mal configurado 3) ¿Probaste en más de un navegador en el celular? Para descartar un navegador que esté funcionando mal 4) ¿Podés ver si hay algún error en la consola en el celu? - No es tan fácil de ver esto (en chrome es conectando el celu a la pc, o haciendo en js que si hay algún error lo escriba en la página), pero si lo llegás a ver quizás acá se pueda ver claramente el problema. Con toda esta info quizás te pueda ayudar! Saludos
@eturbanti_es
@eturbanti_es 8 ай бұрын
Hola, tu contenido es extremadamente interesante y además es lo que yo estaba buscando para solucionar un problema que tengo... pero claro, soy diseñador y no programador y llegado a cierto punto me pierdo o me duermo.. jejeje... sería posible transformar eso en un plugin de Wordpress para que sea fácil implementarlo si conocer código?
@puntojson
@puntojson 8 ай бұрын
Me encantó tu comentario! Es lo más común encontrar esto extremadamente aburrido. Cuando elegís WordPress hay muchos pros, como la facilidad para hacer cosas sin programar y la "simpleza" de todo, pero hay muchas contras también, en donde se encuentra la que siempre querés hacer algo que no se puede... Las soluciones están, pero siempre pagando y terminás dependiendo de 20 plugins para cualquier sitio simple. Yo esquivo WordPress cada vez que puedo y en parte es porque no me siento cómodo con php. Seguramente alguien puede hacer ese plugin, pero dudo que lo haga gratis, ya que los servicios de Google cambian cada dos por tres y cuesta mantenerlos. Yo por mi parte con lo poco que sé de php y de crear plugins me llevaría muchísimo tiempo crearlo...
@Dcamposmunoz
@Dcamposmunoz 8 ай бұрын
Hola, como podría utilizar el formulario desde otra IP que no sea servidor local?
@puntojson
@puntojson 8 ай бұрын
Buenas! Tenés que saber el IP de tu servidor y ponerlo en la lista blanca de la consola de google. Yo lo uso y no hice nada más que cambiar esa configuración.
@dianacristinaaguilardiacri5049
@dianacristinaaguilardiacri5049 3 ай бұрын
Veo que ya no existe informacion donde se diga como acceder desde .NET a google todo el codigo que uso dice que la pagina que intento acceder esta bloqueada.
@puntojson
@puntojson 2 ай бұрын
Buenas! Google sigue teniendo su documentación de las apis con .net, asique no creo que esté completamente dada de baja. Seguramente hay otro problema dando vueltas!
@user-vj6ve1eq5r
@user-vj6ve1eq5r Жыл бұрын
Excelente video, se podra hacer lo mismo con excel??
@puntojson
@puntojson Жыл бұрын
Si es excel online (desde la nube) sí se puede, no lo hice nunca pero acá comienza la documentación que explica como hacerlo learn.microsoft.com/es-es/sharepoint/dev/general-development/excel-services-rest-api o acá learn.microsoft.com/es-es/sharepoint/dev/general-development/walkthrough-developing-a-custom-application-using-excel-web-services Si nunca hiciste algo parecido quizás sea mejor buscar un tutorial online!
@user-vj6ve1eq5r
@user-vj6ve1eq5r Жыл бұрын
@@puntojson muchas gracias por la información y excelente video!! 👍🏻
@juanmarcelomontiel5433
@juanmarcelomontiel5433 9 ай бұрын
Hola Punto Json, excelente el tutorial. Tenés hecho uno donde la conección sea con Angular?. Saludos!!
@puntojson
@puntojson 9 ай бұрын
Buenas! No, no lo tengo aún. Lo que sí te puedo comentar lo siguiente, no hay librería oficial de google api para Angular, por lo cual hay que hacer todo a mano. Arrancaría creando un google.service.ts y después de ahí podrías extender esa clase a otra que sea sheets.service.ts En el servicio de google escribís todo lo que tenga que ver con autenticación, y el en el servicio de sheets todo lo que tenga que ver con las sheets en particular. ¿Me hago entender? Cualquier cosa preguntame!
@juanmarcelomontiel5433
@juanmarcelomontiel5433 9 ай бұрын
Gracias por responder@@puntojson, saludos!!!
@romiwendling3320
@romiwendling3320 11 ай бұрын
Genial! GRan explicación, te consulto: Necesito poder mostrar la info del google sheets en el front online, pero sin que nadie se tenga que autentificar. Qué cambios debería hacer?
@puntojson
@puntojson 11 ай бұрын
Gracias! El método más sencillo sería dejar la hoja pública. Eso hace que puedas leer el link sin siquiera usar la librería de Google sheets, descargandote el archivo separado por comas (csv). En ese caso este tutorial no te estaría sirviendo 😞 Aunque no estoy seguro pero quizás se pueda leer una hoja pública directamente con la librería de sheets antes de iniciar sesión, habría que probarlo 👀
@amaca77
@amaca77 6 ай бұрын
excelente tutorial! que recomendarias para tener una aplicación similar que corra automaticamente desde un servidor actualizando Google sheets a partir de otros datos? algo realizado en python , node, o que tipo de app?
@puntojson
@puntojson 2 ай бұрын
Tanto node como python te pueden servir para eso. Te recomendaría usar la herramienta con la que te sientas más cómodo. No vayas aprendiendo mil lenguajes para cada cosa que quieras. Te conviene por ahí manejarte con poquitos pero que te sirvan para hacer de todo.
@urrutia1986
@urrutia1986 10 ай бұрын
Hola, como puedo hacer para obtener una fila especifica, comparando datos. Por ejemplo extraer la información de un registro específico.
@puntojson
@puntojson 10 ай бұрын
Buenas! En la propiedad "range" que tengo en el llamado a la gapi.clients.spreadsheet.values podés poner los registros que querés buscar. Ahora, si lo querés es buscar algo que no sabés en que fila está, entonces vas a tener que traerte toda la fila y buscar a mano desde el front, por ejemplo utilizando el método .filter con los datos que vienen, no es lo ideal pero no se me ocurre en principio otro método..
@disparafilm
@disparafilm Жыл бұрын
Hola, maravilloso video! He conseguido hacer todo lo que quería. Solo me queda una duda, ¿existe la posibilidad de que los datos de mi hoja se muestren en mi web sin que el usuario tenga que loguearse con su cuenta de google?
@puntojson
@puntojson Жыл бұрын
Buenas! En principio se puede si la hoja de cálculo está en modo público. Pero significa que cualquiera tiene acceso. Hace un tiempo hice esto creando un usuario "programático" que te genera una token qué permitía a un script mío acceder a un sheets privado,por lo cual sé que se puede. Lo que sí eso lo hice hace años y en otro lenguaje de programación asique no estoy seguro como hacerlo en JS. Seguramente Google mismo tiene un tutorial para eso.. Y si no está, tendré que hacerlo!
@johanjairjoseperaltaalmeid5850
@johanjairjoseperaltaalmeid5850 11 ай бұрын
Hola, esto también jala los códigos de appsript
@puntojson
@puntojson 10 ай бұрын
Buenas! No, en principio no obtiene los script de appscript que tengas, todo lo de Appscript se escribe con las herramientas de Google
@memodev
@memodev 7 ай бұрын
Hola Gonzalo, explicas super bien. Quisiera saber si me puedes orientar ya que necesito hacer una pagina parecida donde los usuarios de mi empresa ingresen los codigos referentes a un producto y a su vez estos se comparen con otra oja sheets para saber si uno de los codigos que ingresaron coincide con un pedido en espera. No se si me explique bien. Gracias de antemano por tu tiempo.
@puntojson
@puntojson 7 ай бұрын
Buenas! Gracias por tu mensaje! Lo que haría yo es lo siguiente : En el sheets tiene que haber una columna qué diga si un pedido está terminado o en proceso, también en otra columna pueden estar los id de producto que requiere el pedido, separados por coma. Lees el sheets y filtras todos los pedidos que estén solamente en proceso, para cada columna en un array guardas los ids de cada producto (para cada pedido). Después comparas el ID ingresado con los id productos, al encontrar uno retornas true o el ID del pedido si lo tenés, si no encontrás nada devolvés false. Según el true o false después mostrás un cartel de éxito o no, eso lo podes hacer con una librería que se llama sweet alert si querés (Para que quede lindo) . De entiende lo que quise explicar? Estoy del celu asique quizás no me fui tan profundo. Cualquier cosa avisame!
@memodev
@memodev 7 ай бұрын
@@puntojson que grande Gonzalo.. excelente. Si es cierto no hace falta hacerlo en otra hoja solo cuando agreguen los armazones que estan en espera se comparan con los que estan en stock y si coinciden sale la alerta de cual es la coincidencia y en que caja estan guardados. Gracias lo hare asi. PD: es una optica.
@sergioacosta4242
@sergioacosta4242 8 ай бұрын
Hola muy buen video! una pregunta hay alguna forma de hacer lo mismo pero sin tener que seleccionar el correo de google y aceptar los permisos manualmente ? algo como configurar esos datos por defecto.
@puntojson
@puntojson 8 ай бұрын
Sí, hay que hacer una "service account" en Google Console y usar esa cuenta para hacer la solicitud a Google. Tendrías que compartir esa Sheet con el mail que se genera para esa service account. Para ese caso no sirve la Google API y vas a tener que hacer todas solicitudes fetch a mano, es bastante molesto la verdad, evidencia que Google no quiere que hagas eso en principio, al menos desde Javascript en frontend. Es más sencillo con las herramientas que Google brinda para lenguajes como Python. El peligro de eso es que da a todos los clientes del sitio el mismo permiso. Espero que lo logres hacer!
@gastonsartini3753
@gastonsartini3753 8 ай бұрын
Buenas! Muchas gracias por el video. Hay forma de hacerlo pero para el público? Osea un formulario que cualquiera pueda llenar sin tener que iniciar con su cuenta Google? Y que su respuesta me cargue una gsheet?
@puntojson
@puntojson 8 ай бұрын
Buenas! Sí, se puede creando una service account "una cuenta de google para sistemas" que hace que puedas compartir ese sheet con esa cuenta. Y la service account genera un token que se usa a modo de contraseña para loguear a tu usuario. Sin embargo, esa práctica es no recomendada para frontend, ya que requiere que tengas tus credenciales de la cuenta en tu código de vista al cliente, lo cual lo hace inseguro..! Si trabajás en backend podés usar la biblioteca de google de nodejs para hacer eso..!
@valdez7905
@valdez7905 Жыл бұрын
Buenas tardes, si pongo en x tiempo este revisando si hay cambios del google sheet, hay algun limite de peticiones? Buen video ✌🏼
@puntojson
@puntojson Жыл бұрын
Buenas! Limite hay para el gratuito, pero si no recuerdo mal es altisimo. Dudo que llegues.
@dianacristinaaguilardiacri5049
@dianacristinaaguilardiacri5049 3 ай бұрын
No consigo como usar este codigo en c# webforms
@puntojson
@puntojson 2 ай бұрын
Perdón, pero de C# webforms no tengo nada de idea :/
@denisenagel1644
@denisenagel1644 Жыл бұрын
Consulta, en el minuto 22:20 por qué podes borrar el archivo de credenciales? Si lo borro dejarian de actualizarse los datos? Perdón apenas inicio con bases de datos!
@puntojson
@puntojson Жыл бұрын
Si te fijás bien, el archivo de credenciales siempre fue un comentario, no se usó para nada, por lo cual no infuía en la funcionalidad. Te podés fijar también que en el VScode el archivo credenciales.js siempre está nombrado en gris, lo que significa que ese archivo no está siendo usado. Básicamente lo usé como un block de notas
@denisenagel1644
@denisenagel1644 Жыл бұрын
@@puntojson gracias y disculpa la pregunta.. pero muchisimas gracias me sirve demasiado tu video!!
@franermili8330
@franermili8330 Жыл бұрын
Hola, ¿Cómo estás? excelente video. Está genial la App... Pregunta, si necesito subir la app web a un servidor real, no serviría este método?
@puntojson
@puntojson Жыл бұрын
Buenas! Sí, sirve. Yo usé esto para un proyecto real en producción. Hay que cambiar las configuraciones de la consola de Google para que funcione desde el sitio web real y ya arranca.
@caus_music
@caus_music Жыл бұрын
@@puntojson Hola! Primero que nada te felicito por tus vídeos, excelente contenido. Segundo, quisiera saber como hiciste esa configuración para un proyecto real en producción. Es decir, como se configura para que cualquier usuario que utilice la app web pueda enviar los datos a Google Sheets?
@puntojson
@puntojson Жыл бұрын
Buenas Caus, gracias por la buena onda! No termino de entender exactamente que me estás pidiendo que no sea lo que respondí en el comentario anterior. Hay muchas variables a la hora de hacer un proyecto como este, por ejemplo: Querés que todos los usuarios usen el mismo sheets? Entonces tenés que crear un archivo sheets en modo público para editar (inseguro). Querés que cada usuario pueda acceder a sus archivos, pero los usuarios son "desconocidos"? Entonces tenés que publicar la app y Google te la tiene que aprobar. Querés evitarte la comprobación de google? Entonces la API la tenés que crear desde una cuenta empresa (que no sea @gmail) y todos los usuarios tienen que ser de tu mismo dominio. Si me explicás un poco a dónde estás teniendo problemas voy a hacer lo posible para ayudarrte!
@caus_music
@caus_music Жыл бұрын
@@puntojson Mil gracias por tu respuesta. Lo que quisiera hacer es que cualquier usuario que entre a la app web que ya esté subida en un host, mediante un formulario que diligencia, estos datos lleguen a un archivo google sheets. Para lograr esto que configuración debería realizar? Cabe resaltar que ya logré hacer la conexión en pruebas, quisiera saber que configuración debería realizar en producción.
@puntojson
@puntojson Жыл бұрын
@@caus_music Lo que tenés que hacer primero entonces es entrar a la cloud console, a la parte de api y pantalla de consentimiento y poner que querés que los usuario de la app sean "usuarios externos". Eso re va a requerir crear la pantalla de consentimiento y presentarla a autorizar en google.Una vez tengas eso tenés que entrar a las propiedades de la clave API y cambiar las restricciones de sitio web y poner la URL de tu frontend, también vas a tener que entrar a la pantalla de Oauth y agregar como origenes autorizados tu página. Espero que te sea de ayuda!
@CEDESSMX
@CEDESSMX 7 ай бұрын
Pero sera posible no tener que autenticar cada vez?
@puntojson
@puntojson 7 ай бұрын
Sí, podés guardar el token que Google te da en localstorage y utilizarlo para hacer las solicitudes a Google. Para ese caso no sé si usar la librería de Google será lo mejor o si te conviene usar la api de Google con código escrito por vos. Lamentablemente no tengo un ejemplo para darte 😞
@CEDESSMX
@CEDESSMX 7 ай бұрын
@@puntojson Gracias de todas formas. Excelente tutorial.
@dianacristinaaguilardiacri5049
@dianacristinaaguilardiacri5049 3 ай бұрын
pero no dice como eliminar una fila
@puntojson
@puntojson 2 ай бұрын
Puede ser que se me haya escapado eso! Sin revisar supongo que es prácticamente igual que el get y el update, pero usando el método "delete" de la librería gapi.
@andresj4353
@andresj4353 Жыл бұрын
estan geniales los videos, sabes como conectarse a maps desde tu propia cuenta para sacar datos de navegacion que hiciste? no pude hacerlo yo
@puntojson
@puntojson Жыл бұрын
Gracias por la buena onda! Mmm la verdad es que no lo hice nunca, si está en alguna API, está en "Places" o en la de "Navigation" de Google API (Navigation es dificil de conseguir). developers.google.com/maps/documentation/javascript/places?hl=es-419 . Al ver la documentación parece que no se puede cargar los marcadores de un usuario, pero sí que se pueden mostrar marcadores creados en tiempo de ejecución o en el código, quizás eso te sirve!
@andresj4353
@andresj4353 Жыл бұрын
@@puntojson no me da para entender lo que dijiste pero me pondre a leer. gracias! necesito hacer algun proyecto para hacer un portfolio
@puntojson
@puntojson Жыл бұрын
@@andresj4353 Ufff perdón por pasarme de dificultad. Si se me ocurre algún buen proyecto que incluya un mapa seguro voy a intentar explicar esto..! Si se te ocurre algo, hablame!
@andresj4353
@andresj4353 Жыл бұрын
@@puntojson no pasa nada, estamos en el camino del autodidacta. podrias hacer un discord y hacer una comuna
@soyjaider8996
@soyjaider8996 7 ай бұрын
Muy buen tutorial, me surgio una duda, probando esto subi la aplicacion web a un servidor web basico, y funcionaba perfecto en navegador de escritorio, sin embargo si utilizo la aplicacion en mi celular no funciona, dice que se ha realizado una solicitud no valida, a este motivo, probe cambiando la vista del celular a escritorio y funciono, no se mucho sobre la api de google si me podrias explicar te lo agradceceria
@puntojson
@puntojson 7 ай бұрын
Mm puede llegar a ser por tener deshabilitados los popups desde el celu? A mí del celu me funciona lo más bien, pero para que aparezca la ventana emergente de google, tengo que ponerle "permitir" a una solicitud que me hace. No sé sino que podría ser..!
@soyjaider8996
@soyjaider8996 7 ай бұрын
@@puntojson muchas gracias por responder, la ventana de confirmacion de permisos de google aparece, sin embargo al darle confirmar no vuelve a la pagina desde donde se ejecuto, sino que manda el mensaje de error de google
@puntojson
@puntojson 7 ай бұрын
Mmm realmente me dejaste K.O. Si me podés copiar y pegar bien el error y explciar mejor el ambiente en el que estás probando todo quizás se me puede ocurrir algo. Pero recién probé la herramienta que hice con este código y me anda bien en el celu, igual que en la PC.
@vlv6680
@vlv6680 7 ай бұрын
hola, yo llegué acá por un error similar, en un con el sheet solo lo veo en el pc, en móvil se ve cortado a la mitad, creo que es un error de sheets que no carga correctamente en celulares
@pavlopardo
@pavlopardo Жыл бұрын
y puedo darle más de un documento? necesito que me lea muchas planillas. pd: eres bueno, gracias
@puntojson
@puntojson Жыл бұрын
Si se puede! En el "response = await ..." cargamos un sheets, nada nos prohibe repetir esa líneas y conectarnos a todas las sheets que queramos.
@Ale-ml4mh
@Ale-ml4mh Жыл бұрын
Hola Genio espero estés muy bien! yo quisiera poder contactarte para realizar algunas tareas por privado. se trata de un proyecto para mi empresa. y necesito colaboracion para conectar una app web crm con google sheet. muchas gracias por tu contenido
@puntojson
@puntojson Жыл бұрын
Buenas Ale! Que buena noticia! Enviame tus datos de contacto a contacto@puntojson.com si querés y charlamos.
@pavlopardo
@pavlopardo Жыл бұрын
se puede hacer con un documento google sheets ya hecho antes?
@puntojson
@puntojson Жыл бұрын
Sí, sin problema. Antes o después, la app y el sheets son 2 cosas individuales que hablan entre sí
@pavlopardo
@pavlopardo Жыл бұрын
@@puntojson gracias !!
@duvanmunoz7752
@duvanmunoz7752 Жыл бұрын
Saludos, muy buen video una pregunta. Cuando intento iniciar sesión con el correo me dice error 401, acceso bloqueado.. error de autorización podrías ayudarme?
@puntojson
@puntojson Жыл бұрын
Sí! Fijate que tu correo esté en la lista de correos permitidos en la consola de Google. Sino revisá tanto en la consola en la parte de la api y en la de oauth que tu página esté en la lista de orígenes permitidos (yo puse 127.0.0.1) en el video, fijate que dirección tiene tu compu! Probalo y avisame!
@duvanmunoz7752
@duvanmunoz7752 Жыл бұрын
@@puntojson Si están en la lista y el origen ya lo verifique con el mío y esta perfecto, pero sigue sin funcionar, que podría ser?
@puntojson
@puntojson Жыл бұрын
Mmm fijate si el origen lo pusiste sin la S de https. Sino la verdad tendría que chequearlo con tiempo y con vista al código 😞 Lo vas a tener que googlear porque se complica un poco por acá. Sin embargo si estás escribiendo en código abierto podría revisarlo en mi compu.
@technoh4cksoficial
@technoh4cksoficial 6 ай бұрын
Hay una forma de hacerlo por medio de appscript
@rpmvicmetal8468
@rpmvicmetal8468 3 ай бұрын
Es pregunta o afirmación? Me gustaría más información sobre eso de apps scripts, yo traté al principio pero solo me devolvió error de CORS
@puntojson
@puntojson 2 ай бұрын
Appscript es muy potente y sirve para un montón de cosas. Pero no estoy tan familiarizado con este tema, lo he usado solamente para crear mis funciones personalizadas dentro de una planilla.
@GonzaloMiranda-wh7mv
@GonzaloMiranda-wh7mv 4 ай бұрын
Pesimo me da Error 401: invalid_client y ahi quede :(
@puntojson
@puntojson 2 ай бұрын
Veo que hay mucha gente con problemas, voy a tener que hacer un tutorial nuevo!
@gober4662
@gober4662 2 ай бұрын
Utilizar esto, es gratis?
@puntojson
@puntojson 2 ай бұрын
Sí! Pero tenés un límite de uso, que si sos una empresa chica te mega sobra. No lo recuerdo ahora pero hacé de cuenta que son millones de usos por mes
@siganmelosbuenosok
@siganmelosbuenosok 3 ай бұрын
No lo pude hacer andar, será que ahora google cambio como se autentica todo ?
@puntojson
@puntojson 2 ай бұрын
Es cierto que cambió algunas cosas, no puedo probar el proyecto ahora porque no tengo más esa clave api ni el tengo esa hoja de sheets. :/
Google Apps Script: Creating Managing, and Automating Projects with Script
1:54:55
ROLLING DOWN
00:20
Natan por Aí
Рет қаралды 9 МЛН
Comfortable 🤣 #comedy #funny
00:34
Micky Makeover
Рет қаралды 16 МЛН
Master Google Sheets with Node.js: Read & Write Data Effortlessly!
14:28
Coding with Ado
Рет қаралды 3,8 М.
Google App Script Approval system edit crud
7:44
Yousuf Ahmed sheikh
Рет қаралды 4 М.
Convert Google Sheets into a REST API
14:10
Better Sheets
Рет қаралды 6 М.
Webapp de Registro de Peso con Google Apps Script y Google Sheets
30:59
Curso Google Apps Script desde 0 - 1 - Introducción
51:24
Juan S Guzman
Рет қаралды 19 М.
Aplicación web con angular  ► php con angular
2:01:03
Develoteca - Oscar Uh
Рет қаралды 69 М.
Apps Script 52 -  Buscar registros por valor y mostrar en tabla HTML
26:58