from zero to hero! Solo buscaba algunas referencias para empezar y me tope con el 1.0.1 definitivo. Muchas gracias por el contenido tan bien explicado. Tienes un nuevo suscriptor!!
En este vídeo, hay algunas cosas que pasan demasiado rápido, como por ejemplo donde elije el paquete de diseño CSS, no pude ver, cómo se llega allí, pero la verdad que me encanta este curso, gracias hermano.
Muchas gracias. Me ayudaste con parte de un proyecto donde los vendedores toman pedidos que internamente la web app la guarda en un json y luego se envía para recibir en una hoja de calculo, se allí se exporta a un cvs que sirve como interface a otro sistema de información.
Hola Me encantó tu tutorial la verdad explicas en simple algo difícil. Lamentablemente llevo todo el día en tu video tutorial incluso revise el código sea igual a lo que muestras, pero al clicar enviar me sale error porque la opción elegida no aparece en ningún lado. ¿Tendrás los códigos de esto para ver que no vi? por favor
El siguiente comentario es en base a las observaciones que te realizan en los comentarios... Seria práctico que pudieras compartir una copia de los proyectos o subieras el código a Github por que algunos dicen que no les sale pero es por que se les va algún signo o letra en el código. Saludos!
Mozart, en la función agregar registro, en el argumento new Date arroja el resultado con una hora adelantada. ¿sabes a que se debe el no arrojar la hora correcta? en el video me refiero a este tiempo 17:25.
Hola, tal vez por el formato de hora del sistema no? ya revistaste también el JSON de las propiedades de tu archivo? tal ves tienes gmt-5 en lugar de gmt-6
Hola! Vuelvo con preguntas sobre este video. Seguí los pasos del video Google Apps Script 20 - Formulario de registro con Bootstrap y funciona perfecto, pero cuando la inserto en mi página de Google Sites no realiza la carga, por qué podría ser? Solo estoy insertando la url que funciona correctamente. Gracias y más gracias!!!
🤔 Si tienes configurada tu app para que usuarios diferentes a ti la puedan ver? Ese sería el punto a revisar. 2 ¿El site si esta abierto a otras personas? ya creaste una implementación después de todos tus cambios guardados?
@@mozart_34 si, la app puede verse desde modo incógnito, diferentes navegadores, creo que eso funciona ok. El site también se puede abrir. Lo raro es que no responde cuando quiero guardar un registro desde el site mientras que desde la app funciona perfecto. Recién estaba revisando y en un video modificas una parte de la app, quitando content en el css para subir la app al sites. Voy a seguir probando. Si se te ocurre algo más de por dónde puede estar fallando, te agradecería muchísimo si pudieras compartirlo. Y nuevamente gracias por la claridad y el contenido de tus videos✨
Gracias, pues depende del tamaño de información que vallas a manejar, te serviría mucho para prototipar y si el programa funciona, tarde o temprano tendrás que escalar a una solución más robusta, google cloud tiene soluciones que soportan bases de datos más complejas.
@@mozart_34 ¿escalarlo a Google Cloud es complejo y sencillo el proceso? ¿Tienes algún curso de referencia para aprender sin conocimiento hasta un nivel avanzado?
@Mozart Alberto García de Haro, Excelente tutorial, seguiré tus videos para aprender mas de publicar en google site, al correr lo otro usuario ya publicado en google site siempre le da que los talleres están llenos, a que se debe esto? De antemano gracias por tus atenciones.
@Alejandroo Hernandez gracias, hay que ir descartando, en tus hoja si tienes lugares disponibles para los cursos?, estás trabajando con la implementación de prueba o la de desarrollo? checa que sea la versión de desarrollo más recienterevisa que en la hoja registros si hayas borrado las respuestas previas, si no me avisas para ver que más puede ser
@@mozart_34 Gracias por tu respuesta. Te comento, para que pueda aceptar el registro en Google Sheet tuve que darle permisos de "Editor" al usuario, para que pudiera ingresar su respuesta y quedara grabada en la hoja de "Registro" y restar un lugar mas del taller que eligió. Estoy trabajando en la versión que explicas en el video, capture todo los códigos para poder comprender mejor cual eran los pasos para llegar al resultado. Creo que tengo que estudiar mas tus videos desde el principio, creo que arranque en este que es el numero 14. Con tu forma de enseñar estoy seguro que aprenderé bien . Nuevamente gracias por compartir tu conocimientos que son bastos.
Hola Mozart! muchas gracias por el contenido de tu video (y de tu lista en general) me ha sido muy útil. Una pregunta, cuando inserto el formulario en google sites este no me funciona a menos que la persona que rellena el formulario tenga acceso de editor a la sheet de google que está conectada al formulario. Existe una manera de evitar dar permisos a las demás cuentas de google?
Hola, gracias, claro son aspectos muy importantes, depende de la implementación: puedes configurar tu app para que se ejecute bajo tu cuenta, así no tendrías que compartir el sheet. Si es necesario que se ejecute con el usuario que accede a la app, puedes configurar tu sheet para que cualquiera con el link pueda editar (PERO DE NINGUN MOTIVO PROPORCIONES EL LINK DE TU SHEET, SI NO TENDRÁN ACCESO A ÉL Y PODRÁN MODIFICAR.)
Una pregunta, al momento de mandar el array talleres para usarlo como lista de los radio buttons comentas que el metodo template.talleres = talleres se recomienda solo cuando es poca la información. Pero, y cuando si ed mucha que es lo mejor que se debe hacer para optimizar el código? Gracias de ante mano!!
Hola, puedes crear un evento load, para que cuando cargue tu vista se ejecute una función en el servidor y te traiga los datos, al recibirlos, ejecutas la callback function withSuccessHandler y con eso agregas las opciones al select (eso hará también que tu código html esté más limpio y fácil de leer) Creo que en el video 53 de vistas de tabla puedes ver algo del evento load para cargar información. Espero te sirva.
6 месяцев назад+1
Hola, aqui en web app se puede hacer un formulario donde tenga una barra de busqueda que prediga los resultados a medida que escribo? en google forms no puedo porque la lista es muy larga si las pongo como opciones enlistadas, pero aqui si se puede hacer eso? gracias, recontra SUSCRITO
Hola, primero que nada, exelente canal, todos los videos me son de mucha ayuda, tengo uan pregunta, al hacer y publica una web app todo fucnioa genial no he tenido inconvenientes con ello, loq ue deseo saber es que si hay forma de eliminar el baner que doce " Otro usuario ha creado esta aplicación, no Google. " la unica forma que econtre hasta ahora es insertando la URL de mi web app en un Site de Google, ¿Hay otra manera de hacerlo?, veo en tus videos que no tienes el banner superior...
Muchas gracias, hace como 2 años Google agregó esa leyenda para apps ajenas, la única alternativa que conozco es insertar la web app en un Google site, así desaparece la leyenda
@Mozart Alberto García de Haro, Gracias por todo este material visual que ayuda mucho, he estado repasando los fundamentos 11,12 y 13 sobre proteccion de sheets y quisiera saber si una hoja protegida menos unos rangos, se puede compartir a cualquier persona que la diligencie sin problemas ?
Hola, gracias por el comment. Claro que es posible, de hecho yo así tengo compartidas varias hojas excepto rangos para que puedan editar los compañeros. Si quiero agregar más protección, esos rangos desprotegidos, los protejo y solo dejo a los editores correspondiente. Si lo implementas me cuentas como te va.
Buenísimo el tutorial, como todos. ¡Muchas gracias! Me sería muy útil esta webapp pero no puedo usarla porque solo recoge los mails que están en mi mismo dominio (workspace) a pesar de seleccionar "cualquier cuenta de Google" en la implementación.
Si los usuarios autorizan el script y lo tienes configurado con inicio de sesión si puedes recolectar la dirección de correo, creo que en el de examen aleatorios lo muestro, no recuerdo muy bien
Hola amigo, excelente tus videos, tengo una duda, existe la manera de que esa App pueda ser publica pero que en la Base de datos solo 1 sola persona tenga acceso a la edición de dichos datos? es decir, que los demás solo puedan ingresar los datos mas no editarlos o eliminarlo? agradezco tu valioso conocimiento, gracias
Hola, gracias, claro si existe la posibilidad, a la hora de crear la implementación puedes elegir que seleccionar que se ejecute bajo tu nombre y que pueda acceder cualquier persona incluso de manera anónima, podrán enviar los datos, pero no ver tu info en el sheet.
Muchas gracias por el video he aprendido demasiado con todos tus videos. Tengo una inquietud, estoy realizando un formulario con varias preguntas con tus videos he podido agregar preguntas pero en el archivo de Sheets solo me migra la primera respuesta y no todas, como puedo hacerlo?
Hola, gracias por comentar, no me suena ningún error, debe de seguir agregando más respuestas, te arroja un error en el registro de ejecuciones o en la consola?
Hola Mozart, gracias por responderme. Estuve revisando y tenía un error en el código y lo corregí y ya todo funciona muy bien. Seguiré con tus videos para continuar con mi proyecto, discúlpame si te comento mis dudas
He estado siguiendo al pie de la letra tus videos. Te felicito. Eres un PRO. Disculpa, por alguna razón no me está trabajando el onSubmit del formulario. Pareciera que funciona, pero no ejecuta el addRecord. No se que estoy haciendo mal. Hay alguna manera de que me ayudes?
Muchas gracias, que bueno que te estén sirviendo. Ya revisaste las ejecuciones de tu código? igual y ahí se muestra el error, para ver que está fallando.
@@mozart_34 Gracias por responder. Es que ese es el detalle, en ningún momento da error, siemplemente creo que el submit no está funcionando porque no parece pasar por la function "validarRespuesta" en ningún momento, y por ende, no se ejecuta el google.script.run ni el addRecord dentro de este.
@@DennisMonsalve entonces checa bien el evento, el nombre, el nombre de la función y has un console dentro de la función validar respuesta, para asegurar que el evento se está ejecutando.
hola, tus videos son muy interesantes, pero en mi caso al intentar seguirte me emite un mensaje que no encuentra la funcion doget, ni el nombre del html que debe devolver (file name), espero me puedas orientar cual es mi error
Gracias, si estás en la implementación de prueba? debes tener la función doGet() en el archivo .gs y es la primera que se implementa cuando abres al url de la página.
Hola Mozart, veo que en tu web app no aparece un banner de google, en el cual se alerta al usuario de que la app no es de Google y brinda un link de condiciones de servicio, como es posible lograr eso sin tener que usar un addblocker por ejemplo que oculta elementos de la pagina web. Estaré atento a tus comentarios. Gracias por tu ayuda.
Hola, lo que pasa es que tengo una cuenta de Google Workspace, pero aún así al publicarla sale, el único tip que conozco para que no salga es insertarla en un Google site
Mozart muchas gracias por tus videos. Soy nuevo en GAS y no me funciona, me sale el siguiente error "SyntaxError: Unexpected token '=' (línea 10, archivo "Código")" en la línea 10 esta la siguiente instruccion: var salida = template.evaluate(); Por favor ayuda, que tengo mal. Gracias.
Hola, si tu error está en la línea donde utilizas el método .evaluate() significa que tu error está en el archivo html. Revisa algún error de dedo, alguna etiqueta sin cerrar.
Mr. Mozart, can you share sample google sheet for all lessons? Your tutorial series contains very useful information. Also thank you for your time. Greetings from Türkiye...
Es difícil saber en qué línea fue el código, pero aún funciona esta versión. tal vez ir depurando línea por línea, este proceso te ayuda aprender demasiado.
Hola Mozard, he visto muchas veces tu video para practicarlo y no he podido correrlo , no me corre la función addRecord, ¿que podría estar haciendo mal?
@@panamawebseller3784 eso pasa normalmente cuando no tienes bien le método onSubmint al crear el form y envías el parámetro (this) que es el formulario, checa en la función Javascript que ahí estás recibiendo la función y de ahí la mandas al servidor con google.script.run, te recomiendo ir revisando con console.log() primero que si se está llamando a la función al presionar el botón, después que si está llegando al servidor
@@mozart_34 Muchas gracias Mozart, despues de revisar decena de veces, resulta que en vez de escribir event.preventDefault, escribí event.preventDefaul, . Bueno ahora me sale otro error que no he revisado en detalle jajaja. Todas las opciones me salen el mensaje: Este taller ya no tiene cupo, recarga la pagina.
Hola, claro: en este proyecto utilizo la siguiente biblioteca de estilos de google para add-ons la documentación la encuentras aquí developers.google.com/workspace/add-ons/guides/css
Hola, te refieres a abrir, var/editar un archivo que esté alojado en tu drive? si es así, es posible utilizando el método openById( 'iDdetuDocumento' ), solo podrás editar los documentos que sean de tu propiedad o a los que tengas permiso de edición suando apps script
Buscas abrir este archivo para que ejecute el código dentro de él? Si es así creo (no estoy seguro) que no es posible. Lo que si puedes hacer es programar en otro lenguaje diferente a apps script y conectarlo con la API (developers.google.com/workspace/add-ons/guides/alternate-runtimes) o programar desde la consola (developers.google.com/apps-script/guides/clasp#:~:text=clasp%20lets%20you%20to%20develop,them%20when%20you're%20offline) ojalá te sirva
@Juan Díaz hola! Si, te cuento. Hice en python un archivo que lee la hoja de cálculo de Google y envía un WhatsApp, pero lo que quiero es que envíe ese WhatsApp cuando cuando una celda cambie, cómo por ejemplo la función On Edit
Hola Roberto, ya agregaste la parte de JS? normalmente ese error se presenta cuando no tenemos el código para que envíen los resultados al sheet. si no, podrías indicarme hasta qué parte del tutorial te ha funcionado?
Hola, el google sheet donde estás desarrollando es de tu propiedad? Me ha pasado pocas veces pero he tenido que crear una copia u otro archivo nuevo, sobre todo cuando hay varios editores y alguno crea alguna implementación
Me aparecen dos errores , uno en la función: "include" function include( fileName ){ return HtmlService.createHtmlOutputFromFile( fileName ).getContent(); } error: 17:28:48 Error Exception: Bad value include @ Código.gs:32 nota: la línea 32 es la del return. El otro error es en la función: "addRecord" function addRecord(form){ console.log( form.talleres ); return "Registro Recibido"; } Error: 17:34:50 Error TypeError: Cannot read property 'talleres' of undefined addRecord @ Código.gs:36 nota: la linea 36 es la de: console. Alguien me echa una mano, le he buscado, he repasado cada línea tratando de ubicarme con el vídeo, pero no lo encontrar, dónde me perdí o me fallaron los ojos :)... Gracias de antemano, Dios les bendiga.
Hola, fíjate que en el html donde tienes talleres, si le hayas asignado ese nombre al input o select del form y que si estés enviando el objeto form, oprque dice que no encuentra el objeto form, menos la propiedad. En el primer error revisa que si tengas el nombre adecuado del archivo JS o CSS entre comillas
@@mozart_34 Saludos Mozart, por ahorita suspendí los cursos, porque ya reiniciamos las clases en la escuela, pero al tener tiempo, vuelvo a la carga y espero lograr vencer ese obstáculo, Dios les bendiga.
Mozart, muchas gracias por tus grandes aportes... voy aprendiendo mucho de ellos. Consulta, sabes porqué, a pesar de corre bien, al ejecutar o depurar, aparece un error del tipo: Error Exception: Bad value include @ Código.gs:11
Gracias!✌️ Por lo que veo tienes algún error dentro de la función include, tal vez no tengas el tipo de archivo JS o CSS correcto (debe ser html) o tengas por ahí algún error, pudes mandar una foto del códido y el error?
@@mozart_34 Claro, pero dime cómo te envío la captura. Creo que por aquí no es posible... Y como te decía, incluso depurando (o ejecutando) tu mismo código, también salta este mismo error, a pesar que al parecer no es crítico, porque todo el código finalmente lo ejecuta bien, a pesar de este error. Cuando desde Apps Script, situado en el codigo.gs , ejecutas o depuras seleccionando la función include, en el Registro de Ejecución salta el error: Error Exception: Bad value include @ Código.gs:98
Hola Crack, felicitarte por tu canal y no sé si se puede hacer alguna compensación por tu enorme trabajo a través de BIZUM, paypal o algo por el estilo? En cuanto a esta aplicación estupenda, tengo el siguiente problema que he resuelto en parte. Me gustaría que los talleres no desaparecieran y eso lo consigo modificando la siguiente sentencia de tu código en el archivo Código.gs: if ( row[2] >= -65000) { talleres.push(row[0]); } }); Ya que si lo dejamos > 0, no cargará los que no tengan plazas disponibles. El problema me viene cuando quisiera agregar los registros SIEMPRE pero con dos tipos de estado: ADMITIDO Y PENDIENTE DE APROBACIÓN Dentro del archivo Código.gs Lo he intentado de la siguiente manera pero nunca coge la opción PENDIENTE DE APROBACIÓN. var cupoDisponible = verCupoTaller( form.talleres );
if ( cupoDisponible = true ) { sheetRegistros.appendRow([new Date, form.nombre, form.apellidos, form.correoelectronico, form.telefono, form.talleres, form.estado="ADMITIDO"]); return '¡Su Solicitud de Reserva ha sido recibida con éxito!. En breve nos pondrémos en contacto contigo para garantizar su plaza para el próximo curso.' } else{ sheetRegistros.appendRow([new Date, form.nombre, form.apellidos, form.correoelectronico, form.telefono, form.talleres, form.estado="PENDIENTE DE APROBACIÓN"]); return '¡Su Solicitud de Reserva ha sido recibida con éxito, pero se encuentra en estado de PENDIENTE DE APROBARSE. En breve nos pondrémos en contacto contigo para garantizar su plazpara el próximo curso.' } ¿Qué debería hacer para que funcionase en ambos casos? Muchas gracias
@@pedrotomasdominguezcardena9206 Si ya corregiste el "===" y sigue entrando al else, entonces tal vez el error esté en la función verCupoTaller() y el valor que devuelve.
Es increible la forma de explicar de este chico, si fuera un profesor pagaría por sus clases, seguro seguro
Muchas gracias, 🤗 Esperamos seguir creando contenido.
Vine buscando cobre y encontré oro con tu canal, felicidades !! Tienes un nuevo suscriptor
Muchas gracias Daniel!
Saludos ✌️
from zero to hero! Solo buscaba algunas referencias para empezar y me tope con el 1.0.1 definitivo. Muchas gracias por el contenido tan bien explicado. Tienes un nuevo suscriptor!!
Hola Gustavo, que bueno que te sirvió y suerte con tu camino con Apps Script
Sin palabras! Un lujo!!!!!
Muchas gracias! 👊🏼
excelente tutorial. aprendí mucho. gracias!
Excelente, gracias por comentar 🤓
En este vídeo, hay algunas cosas que pasan demasiado rápido, como por ejemplo donde elije el paquete de diseño CSS, no pude ver, cómo se llega allí, pero la verdad que me encanta este curso, gracias hermano.
Gracias por la retro, creo que si me fui muy rápido en esa parte 😅
Muchas gracias. Me ayudaste con parte de un proyecto donde los vendedores toman pedidos que internamente la web app la guarda en un json y luego se envía para recibir en una hoja de calculo, se allí se exporta a un cvs que sirve como interface a otro sistema de información.
Suena muy chido! podrías compartir algo sobre ese proyecto?
Hola Me encantó tu tutorial la verdad explicas en simple algo difícil. Lamentablemente llevo todo el día en tu video tutorial incluso revise el código sea igual a lo que muestras, pero al clicar enviar me sale error porque la opción elegida no aparece en ningún lado. ¿Tendrás los códigos de esto para ver que no vi? por favor
El siguiente comentario es en base a las observaciones que te realizan en los comentarios... Seria práctico que pudieras compartir una copia de los proyectos o subieras el código a Github por que algunos dicen que no les sale pero es por que se les va algún signo o letra en el código. Saludos!
Cierto, en los primeros capítulos, lo compartía y es de mucha ayuda... saludos y bendiciones
Funciona muy bien ! gracias por el aporte !
* Suscrito !!!
Que bueno que te sirvió! ✌🏼 Saludos
Mozart, en la función agregar registro, en el argumento new Date arroja el resultado con una hora adelantada. ¿sabes a que se debe el no arrojar la hora correcta? en el video me refiero a este tiempo 17:25.
Hola, tal vez por el formato de hora del sistema no? ya revistaste también el JSON de las propiedades de tu archivo? tal ves tienes gmt-5 en lugar de gmt-6
Hola! Vuelvo con preguntas sobre este video. Seguí los pasos del video Google Apps Script 20 - Formulario de registro con Bootstrap y funciona perfecto, pero cuando la inserto en mi página de Google Sites no realiza la carga, por qué podría ser? Solo estoy insertando la url que funciona correctamente. Gracias y más gracias!!!
🤔 Si tienes configurada tu app para que usuarios diferentes a ti la puedan ver?
Ese sería el punto a revisar. 2 ¿El site si esta abierto a otras personas? ya creaste una implementación después de todos tus cambios guardados?
@@mozart_34 si, la app puede verse desde modo incógnito, diferentes navegadores, creo que eso funciona ok. El site también se puede abrir. Lo raro es que no responde cuando quiero guardar un registro desde el site mientras que desde la app funciona perfecto. Recién estaba revisando y en un video modificas una parte de la app, quitando content en el css para subir la app al sites. Voy a seguir probando. Si se te ocurre algo más de por dónde puede estar fallando, te agradecería muchísimo si pudieras compartirlo. Y nuevamente gracias por la claridad y el contenido de tus videos✨
Hola, es muy interesante. ¿Es posible con esa herramienta desarrollar y personalizar un marketplace con crm y erp?
Gracias, pues depende del tamaño de información que vallas a manejar, te serviría mucho para prototipar y si el programa funciona, tarde o temprano tendrás que escalar a una solución más robusta, google cloud tiene soluciones que soportan bases de datos más complejas.
@@mozart_34 ¿escalarlo a Google Cloud es complejo y sencillo el proceso? ¿Tienes algún curso de referencia para aprender sin conocimiento hasta un nivel avanzado?
Muy bueno e interesante el video
Gracias! Saludos! ✌️
Buenas, gracias por la información Consulta estas Web App se pueden realizar en Microsoft , en su equivalente al paquete de Google?
@Mozart Alberto García de Haro, Excelente tutorial, seguiré tus videos para aprender mas de publicar en google site, al correr lo otro usuario ya publicado en google site siempre le da que los talleres están llenos, a que se debe esto?
De antemano gracias por tus atenciones.
@Alejandroo Hernandez gracias, hay que ir descartando, en tus hoja si tienes lugares disponibles para los cursos?, estás trabajando con la implementación de prueba o la de desarrollo? checa que sea la versión de desarrollo más recienterevisa que en la hoja registros si hayas borrado las respuestas previas, si no me avisas para ver que más puede ser
@@mozart_34 Gracias por tu respuesta.
Te comento, para que pueda aceptar el registro en Google Sheet tuve que darle permisos de "Editor" al usuario, para que pudiera ingresar su respuesta y quedara grabada en la hoja de "Registro" y restar un lugar mas del taller que eligió.
Estoy trabajando en la versión que explicas en el video, capture todo los códigos para poder comprender mejor cual eran los pasos para llegar al resultado.
Creo que tengo que estudiar mas tus videos desde el principio, creo que arranque en este que es el numero 14.
Con tu forma de enseñar estoy seguro que aprenderé bien .
Nuevamente gracias por compartir tu conocimientos que son bastos.
Hola Mozart! muchas gracias por el contenido de tu video (y de tu lista en general) me ha sido muy útil. Una pregunta, cuando inserto el formulario en google sites este no me funciona a menos que la persona que rellena el formulario tenga acceso de editor a la sheet de google que está conectada al formulario. Existe una manera de evitar dar permisos a las demás cuentas de google?
Hola, gracias, claro son aspectos muy importantes, depende de la implementación: puedes configurar tu app para que se ejecute bajo tu cuenta, así no tendrías que compartir el sheet. Si es necesario que se ejecute con el usuario que accede a la app, puedes configurar tu sheet para que cualquiera con el link pueda editar (PERO DE NINGUN MOTIVO PROPORCIONES EL LINK DE TU SHEET, SI NO TENDRÁN ACCESO A ÉL Y PODRÁN MODIFICAR.)
@@mozart_34 muchas gracias, probaré lo segundo.
Una pregunta, al momento de mandar el array talleres para usarlo como lista de los radio buttons comentas que el metodo template.talleres = talleres se recomienda solo cuando es poca la información. Pero, y cuando si ed mucha que es lo mejor que se debe hacer para optimizar el código? Gracias de ante mano!!
Hola, puedes crear un evento load, para que cuando cargue tu vista se ejecute una función en el servidor y te traiga los datos, al recibirlos, ejecutas la callback function withSuccessHandler y con eso agregas las opciones al select (eso hará también que tu código html esté más limpio y fácil de leer) Creo que en el video 53 de vistas de tabla puedes ver algo del evento load para cargar información. Espero te sirva.
Hola, aqui en web app se puede hacer un formulario donde tenga una barra de busqueda que prediga los resultados a medida que escribo? en google forms no puedo porque la lista es muy larga si las pongo como opciones enlistadas, pero aqui si se puede hacer eso? gracias, recontra SUSCRITO
Hola, sí, en web app es posible con un datalist, tal vez este video te pueda orientar ruclips.net/video/_UeGY2AAu8s/видео.html
Hola, primero que nada, exelente canal, todos los videos me son de mucha ayuda, tengo uan pregunta, al hacer y publica una web app todo fucnioa genial no he tenido inconvenientes con ello, loq ue deseo saber es que si hay forma de eliminar el baner que doce " Otro usuario ha creado esta aplicación, no Google.
" la unica forma que econtre hasta ahora es insertando la URL de mi web app en un Site de Google, ¿Hay otra manera de hacerlo?, veo en tus videos que no tienes el banner superior...
Muchas gracias, hace como 2 años Google agregó esa leyenda para apps ajenas, la única alternativa que conozco es insertar la web app en un Google site, así desaparece la leyenda
@Mozart Alberto García de Haro, Gracias por todo este material visual que ayuda mucho, he estado repasando los fundamentos 11,12 y 13 sobre proteccion de sheets y quisiera saber si una hoja protegida menos unos rangos, se puede compartir a cualquier persona que la diligencie sin problemas ?
Hola, gracias por el comment. Claro que es posible, de hecho yo así tengo compartidas varias hojas excepto rangos para que puedan editar los compañeros. Si quiero agregar más protección, esos rangos desprotegidos, los protejo y solo dejo a los editores correspondiente. Si lo implementas me cuentas como te va.
6:03 aqui voy
Buenísimo el tutorial, como todos. ¡Muchas gracias! Me sería muy útil esta webapp pero no puedo usarla porque solo recoge los mails que están en mi mismo dominio (workspace) a pesar de seleccionar "cualquier cuenta de Google" en la implementación.
Si los usuarios autorizan el script y lo tienes configurado con inicio de sesión si puedes recolectar la dirección de correo, creo que en el de examen aleatorios lo muestro, no recuerdo muy bien
Hola amigo, excelente tus videos, tengo una duda, existe la manera de que esa App pueda ser publica pero que en la Base de datos solo 1 sola persona tenga acceso a la edición de dichos datos? es decir, que los demás solo puedan ingresar los datos mas no editarlos o eliminarlo? agradezco tu valioso conocimiento, gracias
Hola, gracias, claro si existe la posibilidad, a la hora de crear la implementación puedes elegir que seleccionar que se ejecute bajo tu nombre y que pueda acceder cualquier persona incluso de manera anónima, podrán enviar los datos, pero no ver tu info en el sheet.
@@mozart_34 entre todos tus videos existe alguno que hable especificamente de eso? Mil gracias por tu respuesta
Muchas gracias por el video he aprendido demasiado con todos tus videos. Tengo una inquietud, estoy realizando un formulario con varias preguntas con tus videos he podido agregar preguntas pero en el archivo de Sheets solo me migra la primera respuesta y no todas, como puedo hacerlo?
Hola, gracias por comentar, no me suena ningún error, debe de seguir agregando más respuestas, te arroja un error en el registro de ejecuciones o en la consola?
Hola Mozart, gracias por responderme. Estuve revisando y tenía un error en el código y lo corregí y ya todo funciona muy bien. Seguiré con tus videos para continuar con mi proyecto, discúlpame si te comento mis dudas
11:54 inicia agregar funciones al boton
Si lograste terminarlo ? 🧑🏽💻
@@mozart_34 Si, logré implementar todo. Lo único que no me funcionó es que el botón cambiara a color azul con class="action"
He estado siguiendo al pie de la letra tus videos. Te felicito. Eres un PRO. Disculpa, por alguna razón no me está trabajando el onSubmit del formulario. Pareciera que funciona, pero no ejecuta el addRecord. No se que estoy haciendo mal. Hay alguna manera de que me ayudes?
Muchas gracias, que bueno que te estén sirviendo. Ya revisaste las ejecuciones de tu código? igual y ahí se muestra el error, para ver que está fallando.
@@mozart_34 Gracias por responder. Es que ese es el detalle, en ningún momento da error, siemplemente creo que el submit no está funcionando porque no parece pasar por la function "validarRespuesta" en ningún momento, y por ende, no se ejecuta el google.script.run ni el addRecord dentro de este.
Listo. Ya encontré cual era el error. había escrito mal la lína event.preventDefault();
@@DennisMonsalve Excelente! 👨💻
@@DennisMonsalve entonces checa bien el evento, el nombre, el nombre de la función y has un console dentro de la función validar respuesta, para asegurar que el evento se está ejecutando.
hola, tus videos son muy interesantes, pero en mi caso al intentar seguirte me emite un mensaje que no encuentra la funcion doget, ni el nombre del html que debe devolver (file name), espero me puedas orientar cual es mi error
Gracias, si estás en la implementación de prueba? debes tener la función doGet() en el archivo .gs y es la primera que se implementa cuando abres al url de la página.
Hola Mozart, veo que en tu web app no aparece un banner de google, en el cual se alerta al usuario de que la app no es de Google y brinda un link de condiciones de servicio, como es posible lograr eso sin tener que usar un addblocker por ejemplo que oculta elementos de la pagina web.
Estaré atento a tus comentarios.
Gracias por tu ayuda.
Hola, lo que pasa es que tengo una cuenta de Google Workspace, pero aún así al publicarla sale, el único tip que conozco para que no salga es insertarla en un Google site
Hola. Al final del video comenta que cuando la web app esta embebida en un google sites, este banner desaparece. Saludos.
4:33 demostracion del uso de comando console.log() y consulta del lado del usuario
Mozart muchas gracias por tus videos. Soy nuevo en GAS y no me funciona, me sale el siguiente error "SyntaxError: Unexpected token '=' (línea 10, archivo "Código")" en la línea 10 esta la siguiente instruccion: var salida = template.evaluate();
Por favor ayuda, que tengo mal. Gracias.
Hola, si tu error está en la línea donde utilizas el método .evaluate() significa que tu error está en el archivo html. Revisa algún error de dedo, alguna etiqueta sin cerrar.
Mr. Mozart, can you share sample google sheet for all lessons?
Your tutorial series contains very useful information. Also thank you for your time.
Greetings from Türkiye...
5:00 uso de console.log()
Sí
Hola crack, cuando creo la WebApp me aparece un cartel arriba que dice: esta aplicacion no ha sido creada por google. Como lo has quitado?
Sólo se quita si insertas la web app en un site o en una página web o si tienes un dominio de google y la lanzas internamente.
@@mozart_34 entiendo,muchas gracias.
Hola, tal vez te sirva mi video más reciente 😃
ruclips.net/video/qmpy31ktR-c/видео.html
4:34 el color para la etiqueta parrafo
No me funciono, hice los primeros pasos tal cual y al revisar la consola da un mensaje de muchos errores, que podria ser?
Es difícil saber en qué línea fue el código, pero aún funciona esta versión. tal vez ir depurando línea por línea, este proceso te ayuda aprender demasiado.
Hola Mozard, he visto muchas veces tu video para practicarlo y no he podido correrlo , no me corre la función addRecord, ¿que podría estar haciendo mal?
Hola, te marca algún error? O simplemente no corre esa instrucción? 🤔
@@mozart_34 No me manda error, pasa que cuando le doy al botón enviar, toda la pagina se queda en blanco y no envía el dato a la sheet.
@@panamawebseller3784 eso pasa normalmente cuando no tienes bien le método onSubmint al crear el form y envías el parámetro (this) que es el formulario, checa en la función Javascript que ahí estás recibiendo la función y de ahí la mandas al servidor con google.script.run, te recomiendo ir revisando con console.log() primero que si se está llamando a la función al presionar el botón, después que si está llegando al servidor
@@mozart_34 Muchas gracias Mozart, despues de revisar decena de veces, resulta que en vez de escribir event.preventDefault, escribí event.preventDefaul, . Bueno ahora me sale otro error que no he revisado en detalle jajaja. Todas las opciones me salen el mensaje: Este taller ya no tiene cupo, recarga la pagina.
Gracias, lo he seguido paso a paso, me funciona, pero no encuentro el paquete de estilos CSS, podria por favor facilitarme un link.
Hola, claro: en este proyecto utilizo la siguiente biblioteca de estilos de google para add-ons la documentación la encuentras aquí developers.google.com/workspace/add-ons/guides/css
@@mozart_34 Muchas gracias. por su pronta respuesta me ha servido.
@@mozart_34 Gracias a mi tambien me sirvio saludos
@@cesaralonsogalaviz7253 Excelente! 💪
Hola! Se puede abrir un archivo externo usando apps script?
Hola, te refieres a abrir, var/editar un archivo que esté alojado en tu drive? si es así, es posible utilizando el método openById( 'iDdetuDocumento' ), solo podrás editar los documentos que sean de tu propiedad o a los que tengas permiso de edición suando apps script
@@mozart_34 yo pensaba en ejecutar un archivo .py
Buscas abrir este archivo para que ejecute el código dentro de él? Si es así creo (no estoy seguro) que no es posible. Lo que si puedes hacer es programar en otro lenguaje diferente a apps script y conectarlo con la API (developers.google.com/workspace/add-ons/guides/alternate-runtimes) o programar desde la consola (developers.google.com/apps-script/guides/clasp#:~:text=clasp%20lets%20you%20to%20develop,them%20when%20you're%20offline) ojalá te sirva
@@mozart_34 y con Google colab, maneja python. Yo quiero que cuando se modifique una celda haga web scraping con selenium
@Juan Díaz hola! Si, te cuento. Hice en python un archivo que lee la hoja de cálculo de Google y envía un WhatsApp, pero lo que quiero es que envíe ese WhatsApp cuando cuando una celda cambie, cómo por ejemplo la función On Edit
No me corre aparece error en el código en la function doGet
Buenas tengo problemas. al dar al botón no se registra los datos en la hoja y se me queda en una pantalla en blanco.
¿Qué estoy haciendo mal?
Gracias
Hola Roberto, ya agregaste la parte de JS? normalmente ese error se presenta cuando no tenemos el código para que envíen los resultados al sheet. si no, podrías indicarme hasta qué parte del tutorial te ha funcionado?
Me sale este mensaje :Otro usuario ha creado esta aplicación, no Google. y no me muestra ni el Hola
Hola, el google sheet donde estás desarrollando es de tu propiedad? Me ha pasado pocas veces pero he tenido que crear una copia u otro archivo nuevo, sobre todo cuando hay varios editores y alguno crea alguna implementación
A los que les marca errores chequen que las líneas y tengan comillas simples. A mi marcaba error pero en el archivo GAS, pero eran por estas comillas.
podrias compartir para crear una copia de tu proyecto ??
Si bien es práctico contar con todo el código y documentos es mucho más didáctico teclearlo desde cero.
Hola oye no me resta en la base de datos hace todo inserta registro pero no me resta, no me marca ningún error.
SAludos
Hola, si tienes la fórmula en la hoja de cálculo para que reste? Según los registros?
@@mozart_34 No, gracias por decirlo, pero come seria soy programador casi no conozco sheets.
@@mozart_34 No le entendi a la formula no se de donde sale "Registro!C:C, A2"
Ya vi, solo que a mi me acepta la formula countif, y tenia error porque no es (,) me pide poner (;)
14:41
🤓
Me aparecen dos errores , uno en la función: "include"
function include( fileName ){
return HtmlService.createHtmlOutputFromFile( fileName ).getContent();
}
error:
17:28:48 Error
Exception: Bad value
include @ Código.gs:32
nota: la línea 32 es la del return.
El otro error es en la función: "addRecord"
function addRecord(form){
console.log( form.talleres );
return "Registro Recibido";
}
Error:
17:34:50 Error
TypeError: Cannot read property 'talleres' of undefined
addRecord @ Código.gs:36
nota: la linea 36 es la de: console.
Alguien me echa una mano, le he buscado, he repasado cada línea tratando de ubicarme con el vídeo, pero no lo encontrar, dónde me perdí o me fallaron los ojos :)... Gracias de antemano, Dios les bendiga.
Hola, fíjate que en el html donde tienes talleres, si le hayas asignado ese nombre al input o select del form y que si estés enviando el objeto form, oprque dice que no encuentra el objeto form, menos la propiedad.
En el primer error revisa que si tengas el nombre adecuado del archivo JS o CSS entre comillas
@@mozart_34 Saludos Mozart, por ahorita suspendí los cursos, porque ya reiniciamos las clases en la escuela, pero al tener tiempo, vuelvo a la carga y espero lograr vencer ese obstáculo, Dios les bendiga.
Mozart, muchas gracias por tus grandes aportes... voy aprendiendo mucho de ellos. Consulta, sabes porqué, a pesar de corre bien, al ejecutar o depurar, aparece un error del tipo: Error
Exception: Bad value
include @ Código.gs:11
Gracias!✌️
Por lo que veo tienes algún error dentro de la función include, tal vez no tengas el tipo de archivo JS o CSS correcto (debe ser html) o tengas por ahí algún error, pudes mandar una foto del códido y el error?
@@mozart_34 Claro, pero dime cómo te envío la captura. Creo que por aquí no es posible... Y como te decía, incluso depurando (o ejecutando) tu mismo código, también salta este mismo error, a pesar que al parecer no es crítico, porque todo el código finalmente lo ejecuta bien, a pesar de este error. Cuando desde Apps Script, situado en el codigo.gs , ejecutas o depuras seleccionando la función include, en el Registro de Ejecución salta el error: Error
Exception: Bad value
include @ Código.gs:98
@@deptosalkilo8563 Tengo el mismo problema, ¿Lo solucionaste? :C
Me pasa lo mismo en dos funciones, le he buscado y no logro entender el por qué...
no puedo hacer que el codigo
Hola Crack, felicitarte por tu canal y no sé si se puede hacer alguna compensación por tu enorme trabajo a través de BIZUM, paypal o algo por el estilo?
En cuanto a esta aplicación estupenda, tengo el siguiente problema que he resuelto en parte. Me gustaría que los talleres no desaparecieran y eso lo consigo modificando la siguiente sentencia de tu código en el archivo Código.gs:
if ( row[2] >= -65000) {
talleres.push(row[0]);
}
});
Ya que si lo dejamos > 0, no cargará los que no tengan plazas disponibles.
El problema me viene cuando quisiera agregar los registros SIEMPRE pero con dos tipos de estado: ADMITIDO Y PENDIENTE DE APROBACIÓN
Dentro del archivo Código.gs
Lo he intentado de la siguiente manera pero nunca coge la opción PENDIENTE DE APROBACIÓN.
var cupoDisponible = verCupoTaller( form.talleres );
if ( cupoDisponible = true ) {
sheetRegistros.appendRow([new Date, form.nombre, form.apellidos, form.correoelectronico, form.telefono, form.talleres, form.estado="ADMITIDO"]);
return '¡Su Solicitud de Reserva ha sido recibida con éxito!. En breve nos pondrémos en contacto contigo para garantizar su plaza para el próximo curso.'
}
else{
sheetRegistros.appendRow([new Date, form.nombre, form.apellidos, form.correoelectronico, form.telefono, form.talleres, form.estado="PENDIENTE DE APROBACIÓN"]);
return '¡Su Solicitud de Reserva ha sido recibida con éxito, pero se encuentra en estado de PENDIENTE DE APROBARSE. En breve nos pondrémos en contacto contigo para garantizar su plazpara el próximo curso.'
}
¿Qué debería hacer para que funcionase en ambos casos?
Muchas gracias
Gracias, en buymeacoffee peudes seguirme. en if ( cupoDisponible = true ) tienes un error, el operador es == o === para comparar si es true.
@@mozart_34 He intentado con lo que me comentas pero siempre se me mete en el ELSE a pesar de haber plazas...
@@pedrotomasdominguezcardena9206 Si ya corregiste el "===" y sigue entrando al else, entonces tal vez el error esté en la función verCupoTaller() y el valor que devuelve.