- 25
- 100 588
Carlos G
Colombia
เข้าร่วมเมื่อ 30 เม.ย. 2021
Este canal se creó con el fin de profundizar en un conocimiento libre en distintas tecnologías y herramientas que nos ayudarán a superar los desafíos diarios que se presentan a nivel profesional y personal. Intentamos que las personas adquieran habilidades digitales, que les permitan desenvolverse de muy buena forma en las áreas donde laboren o emprendan. Si trabajas con Apps Script, Google Sheets, Looker Studio y otras tecnologías relacionadas, ¡este es el lugar indicado para ti!.
¿Qué puedes esperar en este canal?
🚀 Tutoriales paso a paso
💡 Consejos y trucos.
🧩 Soluciones a desafíos reales.
🔍 Explorando nuevas tecnologías: Además de Apps Script, Google Sheets y Looker Studio, también exploraremos otras tecnologías relevantes para ampliar tus conocimientos y habilidades.
Espero tenerlos de compañeros en este viaje de aprendizaje. Suscribete.
¿Qué puedes esperar en este canal?
🚀 Tutoriales paso a paso
💡 Consejos y trucos.
🧩 Soluciones a desafíos reales.
🔍 Explorando nuevas tecnologías: Además de Apps Script, Google Sheets y Looker Studio, también exploraremos otras tecnologías relevantes para ampliar tus conocimientos y habilidades.
Espero tenerlos de compañeros en este viaje de aprendizaje. Suscribete.
Formularios Desde Cero: Guardar Datos en Google Sheets con Apps Script
🎓 Formularios Desde Cero con Apps Script y HTML | Episodio 2: Bienvenido al segundo video de la serie. En este tutorial, aprenderás cómo guardar los datos de un formulario HTML directamente en Google Sheets utilizando Apps Script.
🔍 ¿Qué aprenderás en este video?
Introducción a Apps Script: Comprende qué es y cómo puede ayudarte a conectar tus formularios con Google Sheets.
Código paso a paso: Te guiaré a través de la implementación del código necesario para almacenar la información que recolectas en tu formulario.
Ejemplo práctico: Construiremos un formulario simple y verás en tiempo real cómo los datos se guardan en tu hoja de cálculo.
📈 ¿Por qué usar Google Sheets? Google Sheets es una herramienta poderosa y accesible para almacenar datos, permitiéndote organizar y analizar la información de manera eficiente.
✨ No olvides suscribirte y activar las notificaciones para estar al tanto de más contenido de esta serie. Si tienes preguntas o sugerencias, déjalas en los comentarios. ¡Estoy aquí para ayudarte a aprender!
Repositorio de código: carlosg28.blogspot.com/2024/10/formularios-desde-cero-guardar-datos-en.html
Primer video de la serie: th-cam.com/video/HQyKaI0hvPY/w-d-xo.html
🔍 ¿Qué aprenderás en este video?
Introducción a Apps Script: Comprende qué es y cómo puede ayudarte a conectar tus formularios con Google Sheets.
Código paso a paso: Te guiaré a través de la implementación del código necesario para almacenar la información que recolectas en tu formulario.
Ejemplo práctico: Construiremos un formulario simple y verás en tiempo real cómo los datos se guardan en tu hoja de cálculo.
📈 ¿Por qué usar Google Sheets? Google Sheets es una herramienta poderosa y accesible para almacenar datos, permitiéndote organizar y analizar la información de manera eficiente.
✨ No olvides suscribirte y activar las notificaciones para estar al tanto de más contenido de esta serie. Si tienes preguntas o sugerencias, déjalas en los comentarios. ¡Estoy aquí para ayudarte a aprender!
Repositorio de código: carlosg28.blogspot.com/2024/10/formularios-desde-cero-guardar-datos-en.html
Primer video de la serie: th-cam.com/video/HQyKaI0hvPY/w-d-xo.html
มุมมอง: 314
วีดีโอ
Formularios Desde Cero: Estructura Básica de un Formulario HTML
มุมมอง 32621 วันที่ผ่านมา
🎓 Formularios Desde Cero con Apps Script y HTML | Episodio 1: ¡Aprende a crear la estructura básica de un formulario web con HTML! En este tutorial paso a paso, te enseñaré los fundamentos de HTML para que puedas construir tu primer formulario. 🔥 En este video, descubrirás cómo estructurar un formulario de manera efectiva y qué etiquetas HTML necesitas. ¡Es el primer paso para automatizar formu...
Cómo Construir un Sistema de Gestión de Inventarios con Apps Script y HTML
มุมมอง 2.9K9 หลายเดือนก่อน
¿Te gustaría simplificar la gestión de inventarios de tu negocio? Acompáñame en este tutorial donde creamos desde cero un Sistema de Inventario utilizando Google Sheets y Google Apps Script. Aprenderás a agregar y gestionar referencias, registrar movimientos y mantener un seguimiento eficiente de tus existencias. Link código: carlosg28.blogspot.com/2024/01/como-construir-un-sistema-de-gestion-d...
Cómo Crear un Formulario HTML para Subir Archivos a Google Drive con Apps Script
มุมมอง 4.5Kปีที่แล้ว
¡Bienvenido a mi canal! En este emocionante tutorial, te mostraré paso a paso cómo crear un formulario HTML que te permitirá subir archivos directamente a Google Drive, todo gracias al poderoso Apps Script de Google. Ya no tendrás que preocuparte por subir archivos manualmente, ¡automatiza este proceso y ahorra tiempo!. En este video, aprenderás: 1. Cómo diseñar un formulario HTML simple pero e...
Formulario Dinámico: Cómo Crear Campos Autocompletados con Apps Script, HTML en Google Sheets.
มุมมอง 3.4Kปีที่แล้ว
¿Alguna vez te has preguntado cómo algunos formularios pueden autocompletar ciertos campos en función de las selecciones realizadas? ¡No busques más! En este video, te guiaré paso a paso para construir un formulario interactivo que, al seleccionar un tipo de comida, automáticamente rellenará el campo de bebida correspondiente. No te pierdas este emocionante tutorial de creación de formularios c...
Cómo buscar datos en segundos en Google Sheets con Apps Script (BuscarV)
มุมมอง 5Kปีที่แล้ว
En este video aprenderás cómo automatizar tus búsquedas y hacerlas más precisas utilizando Apps Script, una herramienta de programación de Google que te permite crear scripts personalizados para trabajar con sus aplicaciones. Nos encantaría ayudarte a superar los desafíos que has enfrentado con Apps Script, proporcionandote soluciones prácticas. Participa de esta breve encuesta, para que podamo...
Google sheets-Bucle tipor for in en Apps Script, gestión de costos de envíos
มุมมอง 941ปีที่แล้ว
En este video vemos como podemos utilizar un bucle tipo for para automatizar algunas tareas en apps script, este bucle funciona similar a un for, pero no nos tenemos que preocupar por el indice. Pueden crear un menú para ejecutar el script de forma fácil. Espero les sea de utilidad, saludos. Enviar emails con Apps Script: th-cam.com/video/QaZL4lSBiDA/w-d-xo.html Crear menú: th-cam.com/video/Thp...
Google Sheets - Cómo enviar correos electrónicos usando una plantilla en sheets y Apps Script
มุมมอง 6Kปีที่แล้ว
En este video, aprenderemos cómo enviar correos electrónicos utilizando una plantilla sencilla construida en google sheets. Programaremos una función de apps script para enviar los correos a los clientes y por último agregaremos un botón para ejecutar el código desde la interfaz de la hoja de cálculo. Nos encantaría ayudarte a superar los desafíos que has enfrentado con Apps Script, proporciona...
Cómo cargar datos en un formulario HTML desde una Google sheet con apps script
มุมมอง 6Kปีที่แล้ว
En este video aprenderemos como cargar datos que tenemos almacenados en una pestaña de una hoja de cálculo en un input (Entrada) de un formulario construido en html, acá respondemos a la pregunta que anteriormente varias personas me han realizado al respecto. Espero les sea de utilidad. Muchos éxitos. Nos encantaría ayudarte a superar los desafíos que has enfrentado con Apps Script, proporciona...
Google sheets-Apps script, condicionales básicas y bucles tipo for (incluye ejercicio)
มุมมอง 4.2Kปีที่แล้ว
Repositorio de código ejemplo: carlosg28.blogspot.com/2023/01/condicionales-if-else-if-else.html En este video veremos como es la estructura de algunas condicionales básicas que se manejan en Apps Script (if, else-if y else), luego de entender está estructura, vamos a ver cómo se construye un bucle tipo for y por último pero no menos importante, realizaremos un ejercicio para copiar datos de un...
Google sheets-apps script, cómo dar estilo y formato a datos
มุมมอง 3.9Kปีที่แล้ว
Cuando copiamos datos de una hoja a otra, muchas veces la información no queda con los formatos que se tenían en los archivos de origen, como por ejemplo, moneda, número, porcentaje, etc, por tanto en este video aprenderemos cómo dar estilo y formato a los datos y celdas, esto lo haremos con Google Apps Script. Nos encantaría ayudarte a superar los desafíos que has enfrentado con Apps Script, p...
Aplicando estilos a formulario con CSS y Google Apps Script
มุมมอง 2.4K2 ปีที่แล้ว
En este video aplicaremos código CSS a nuestro formulario tipo barra lateral que hemos creado en videos anteriores, esto dará un aspecto visualmente más agradable a nuesto formulario. ¡Vamos! Crear formulario parte 1: th-cam.com/video/HA0phyWhyAI/w-d-xo.html Crear formulario parte 2: th-cam.com/video/O7AGF41Bawk/w-d-xo.html Link para el código: carlosg28.blogspot.com/2021/05/codigo-para-pasar-d...
Apps script-Html5, Formulario tipo barra lateral
มุมมอง 2.6K2 ปีที่แล้ว
Continuaremos construyendo nuestro formulario tipo barra lateral con HTML5 y Apps Script, esta vez le vamos a dar funcionalidad al formulario, para que nos guarde los datos ingresados en la Google Sheets al oprimir el botón de enviar (Guardar). Link parte 1: th-cam.com/video/HA0phyWhyAI/w-d-xo.html Saludos a todos y muchos éxitos con la construcción de sus formularios Facebook: Cha...
Formulario tipo barra lateral en Html y Apps Script Part 1
มุมมอง 4.3K2 ปีที่แล้ว
En este video iniciaremos a construir un formulario tipo barra lateral con HTML5 y Apps Script, guardando los datos recopilados en una hoja de cálculo, en esta primera parte nos enfocaremos en el desarrollo y compresión de los elementos HTML que se utilizan para construir un formulario. Elementos Html para formularios: developer.mozilla.org/en-US/docs/Web/HTML/Element/input Video parte 2: th-ca...
Google Sheets-Apps Script, eliminar celdas con base a una condición o dato especifico
มุมมอง 5K2 ปีที่แล้ว
Google Sheets-Apps Script, eliminar celdas con base a una condición o dato especifico
Google sheets-Apps Script, Consolidar información de varias hojas de cálculo en un solo archivo
มุมมอง 7K2 ปีที่แล้ว
Google sheets-Apps Script, Consolidar información de varias hojas de cálculo en un solo archivo
Introducción a Google Apps Script, Implementar el servicio Html
มุมมอง 6K3 ปีที่แล้ว
Introducción a Google Apps Script, Implementar el servicio Html
Introducción a Google Apps Script, Creando variables globales y archivo tipo HTML
มุมมอง 2K3 ปีที่แล้ว
Introducción a Google Apps Script, Creando variables globales y archivo tipo HTML
Introducción a Apps Script, Cómo crear activadores
มุมมอง 4.2K3 ปีที่แล้ว
Introducción a Apps Script, Cómo crear activadores
Introducción a Apps Script-Cómo escribir código en el editor
มุมมอง 1.2K3 ปีที่แล้ว
Introducción a Apps Script-Cómo escribir código en el editor
Introducción a Apps Script, Descripción general del editor de comandos
มุมมอง 7553 ปีที่แล้ว
Introducción a Apps Script, Descripción general del editor de comandos
Google sheets-apps script, borrar celdas y rangos.
มุมมอง 6K3 ปีที่แล้ว
Google sheets-apps script, borrar celdas y rangos.
Google sheets-apps script, copiar datos de un archivo a otro
มุมมอง 16K3 ปีที่แล้ว
Google sheets-apps script, copiar datos de un archivo a otro
Gracias por el vídeo y por compartir tus conocimientos. Podrías hacer uno complementando el formulario para hacer un CRUD con botones.
Excelente aporte @Carlos G, te agradezo la información.
Es con mucho gusto, saludos
Muchas gracias por compartir tu conocimiento
Muchas gracias a ustedes por los comentarios, la idea de este canal es que podamos aprender juntos y que podamos resolver los desafíos de día a día en nuestros flujos de trabajo, por eso me encanta enseñar, Saludos.
Gracias y bendiciones.. por su conocimiento en web. Y google sheets
Muchas gracias a ti por los comentarios y enseñar es una de las mejores cosas que podemos hacer por los demás y por nosotros mismos, resolver desafíos en nuestros flujos de trabajo mientras aprendemos es nuestro sentido.
hola, no me quiere funcionar, parece que no encontrara la carpeta o la hoja de exel pero ya he intentado de todo y nada, por fa ayudame
Hola Enrique espero te encuentres muy bien. Te agradezco por favor me compartas el código que has construido para revisar que puede estar pasando y poder verificar cuales son los ajustes que se deben hacer. Mi correo: carlosgarciavalencia9@gmail.com.
Buenos dias una pegunta de que manera puedo hacer para que con una data en un excel que a partir de tipiar el email puedo consultar el excel y llenar otros campos como nombre y departamento por ejemplo
Buenos días Armando, espero te encuentres bien. Lo primero que se debe hacer es que se debe tener una google sheet(Hoja de cálculo de google) con los datos, para poder crear el código. Vamos suponer que tenemos una sheet que tiene una pestaña que se llama datos y ahí esta la información, vamos a crear un archivo en el editor de secuencia de comandos que se llame Code.gs y ahí ponemos este código: function doGet() { return HtmlService.createHtmlOutputFromFile("index").setTitle("Consulta por Email"); } function buscarPorEmail(email) { // Obtén la hoja de "Datos" const hoja = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Datos"); const data = hoja.getDataRange().getValues(); // Obtener todos los datos // Busca el email en la hoja y recupera los datos correspondientes for (let i = 1; i < data.length; i++) { // Empieza en 1 para omitir los encabezados if (data[i][0] === email) { // Asumiendo que el email está en la primera columna (índice 0) return { nombre: data[i][1], // Columna de nombre departamento: data[i][2] // Columna de departamento }; } } return null; // Si no se encuentra el email } Luego creamos otro archivo tipo HTML que se llame Index (lo puedes nombrar como quieras, solo asegurate de que ese nombre sea el mismo del createHtmlOutputFromFile, ahí ingresamos el código HTML este es un ejemplo simple, pero puedes poder el del video si es el que estas utilizando: <!DOCTYPE html> <html> <body> <h3>Consulta por Email</h3> <label>Email:</label> <input type="text" id="email" oninput="buscarYCompletar()"> <br><br> <label>Nombre:</label> <input type="text" id="nombre" readonly> <br><br> <label>Departamento:</label> <input type="text" id="departamento" readonly> <script> function buscarYCompletar() { const email = document.getElementById("email").value; if (email) { google.script.run.withSuccessHandler(mostrarDatos).buscarPorEmail(email); } } function mostrarDatos(datos) { if (datos) { document.getElementById("nombre").value = datos.nombre; document.getElementById("departamento").value = datos.departamento; } else { document.getElementById("nombre").value = ''; document.getElementById("departamento").value = ''; } } </script> </body> </html> Me cuentas si te sirve, saludos
@@carlosg89 entiendo lo que dices el problema o la dificultad esta en que tengo un formulario que no esta en html es un form de google que pasa los campos departamento y nombre ellos quieren que cuando ingreses al formulario ya el email lo capturó poder consultar el excel(lo hago en el archivo gs ) esos datos q obtengo mediante el correo poder colocarlos de forma automatica en forms de google
function buscarPorParametros() { var ss= SpreadsheetApp.openById("1jipmctt6e3RHV-8gcrGhMMAvjrMdoeXPbHA33MDBlfc"); var sheet= ss.getSheetByName("oct-24"); var values = sheet.getSheetValues(1,1, sheet.getLastRow(), sheet.getLastColumn()); email=Session.getActiveUser().getEmail(); console.log(email); for(i=0; i <= values.length-1; i++){ if (email==values[i][5]){ nombre=values[i][1]; console.log(nombre); departamento=values[i][4] console.log(departamento); } } esta es mi funcion en el archvo gs
Hola! Muchas gracias por el video. Me encantan tus tutoriales. Me queda una duda sobre cómo hacer un botón para que los correos se envíen fila por fila manualmente ¿eso sería posible?
Hola Maria Fernanda, espero te encuentres bien y gracias por el comentario, lo que puedes hacer es modificar el código es de la siguiente manera (Te dejo comentarios en el código para que te quede fácil ir comprendiendo): function enviarEmailFilaSeleccionada() { // Acceder a la hoja de "Consolidado pedidos" const hoja = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Consolidado pedidos"); const filaSeleccionada = hoja.getActiveCell().getRow(); // Obtiene la fila seleccionada // Verifica que no sea la primera fila (por ejemplo, si ahí están los encabezados) if (filaSeleccionada <= 1) { SpreadsheetApp.getUi().alert("Por favor selecciona una fila válida."); return; } // Obtener los datos de la plantilla y de la fila seleccionada const plantillaTexto = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Platilla Email").getRange(1, 1).getValue(); const actualEmail = hoja.getRange(filaSeleccionada, 11).getValue(); const pedido = hoja.getRange(filaSeleccionada, 3).getValue(); const cliente = hoja.getRange(filaSeleccionada, 1).getValue(); // Reemplazar los valores en la plantilla const emailTexto = plantillaTexto.replace("{name}", cliente).replace("{pedido}", pedido); const asunto = "Tu pedido #" + pedido; // Enviar el correo MailApp.sendEmail(actualEmail, asunto, emailTexto); // Mostrar una alerta de confirmación SpreadsheetApp.getUi().alert(`Correo enviado a ${cliente}`); } Para construir el botón lo puedes hacer por medio de la herramienta dibujo como lo hacemos en este video o lo puedes hacer de otra forma como muestra este otro video: th-cam.com/video/Thp9kCdJXKw/w-d-xo.html Espero te sirva y quedo atento. Saludos.
@ ¡muchísimas gracias por la ayuda!
Gracias por el Vidrio Si puedes ampliar mas la zona donde escribes sería de agradecer. Me encanta como lo explicas ayuda mucho, casi sin conocimientos en Sheets.
El tema del zoom fue algo de falta de experiencia 😅😅, es uno de mis primero videos, pero los siguientes videos ya tienen la corrección, me encanta que te sirva el video y la idea es que podamos sacar el mayor provecho a las herramientas sin necesidad de ser unos expertos, saludos.
Muchas gracias, voy a ver voy a mirar en tu canal si hay app script de gs
Hola y espero te encuentres muy bien, bienvenido y espero te pueda servir los videos de mi canal, la idea es aprender entre todos.
Te estoy muy agradecido por los videos. Con mi edad me cuesta algo retener pero pasito a pasito voy aprendiendo. Usaba en mi trabajo algo en los Excel pero esto cambia. Estoy intentando con un inputbox un desplegable para elegir una hoja para que el script se ejecute allí y otro que permita crear hoja y configurar todo con código. Las variables algunas no me funcionan. Esto lo hago por entretenimiento. Gracias por contestar y por el vidrio 😊😊😊
Hola Carlos, desde Tenerife-Islas canarias- Españagracias facilitarnos tu gran trabajo, me podrian facilitar el Link con el codigo de este trabajo, seguramente estoy haciendo algo mal porque cuando implemento se me refleja el codigo en formulario. Gracias.
Ya no es nesesario he conseguido solucionarlo, Gracias.
@evaristogonzalez2136 buenos días espero te encuentres muy bien, me alegra mucho que pudiste solucionarlo, igualmente voy a seguir dejando un link que lleve al repositorio del código. Mil gracias por tus comentarios.
Hola , estuve intentando hacer el código pero no me sirve que hago ??😢
Hola espero te encuentres muy bien. Me puedes dar detalle del error que te sale o enviarme un pantallazo del error y una copia de código a mi correo?
@@carlosg89claro dame tu correo
@@carlosg89si claro te agradecería, envíame tu correo
Si claro , envíame tu correo
@@dulcefajardo1428 claro es carlosgarciavalencia9@gmail.com
Buen video, a la espera de más
Hola espero te encuentres muy bien. Claro que si, este es el primero de una serie sobre formularios, para el próximo le agregaremos funcionalidad y guardaremos datos en google sheet. Saludos
Gracias por su tiempo y conocimiento bendicioneS. Funciona para verlo celular
Mil gracias pir el comentario, la idea es que se pueda adaptar a varios tipos de pantalla y para eso incluimos las elementos meta. Saludos.
Buenas, estoy realizando un proyecto en apps script, tengo un index.html que tiene un boton inventario, este debe abrir inventario.html, hasta aquí todo bien, luego alli hay un boton nuevo que se llama nuevo registro y debe abrir nuevoregistroinventario.html, pero no lo hace. He estado buscando una solucion y no la encuentro. Todos los tutoriales que hay son un index.html que puede abrir una pagina secundaria, pero no hay de secundaria a terciaria, y asi sucesivamente. Agradezco tu ayuda
Hola amigo, lo que quieres es que al dar en el boton de agregar registro se abra una ventana emergente con un formulario para ingresar los datos de la transacción, lo entiendo bien?
Al anotar la función for tal cual la escribes, me dice que tengo un error de sintaxis, podrias ayudarme.
Hola, espero te encuentres bien, claro que si, comparte tu código por favor para verificar cuál es el error. saludos
Super bueno, muchas gracias !
Me alegra mucho que sirva te sirva el contenido, saludos.
Hola Carlos, mira que al intentarlo me sale el siguiente error "Exception: Cannot call SpreadsheetApp.getUi() from this context.", este es el código que use siguiendo tu video y la funcion que ejecuta se llama actualizacion. function onOpen() { SpreadsheetApp.getUi() .createMenu('Ejecutar') .addItem('Actualizar Programacion', 'actualizacion') .addToUi(); } Me podrias orientar en que esta fallando por favor
Ya lo pude solucionar, tocaba cerrar la hoja y al abrirla de nuevo se ejecutaba, tal como lo dice el nombre de la funcion "onOpen", muchas gracias por tus videos me han servido mucho
Me ayudó muchísimo, gracias!! Se puede cambiar la fuente, color, tamaño e insertar imagenes en la macro??
Hola, espero te encuentres bien. Sí, puedes cambiar la fuente, color, tamaño e insertar imágenes en un correo enviado desde Google Sheets utilizando MailApp.sendEmail, para eso debemos hacer algunos cambios en el cóidigo ya que el correo lo estamos enviando desde un formato plano y debemos pasarlo a un formato HTML. function enviarEmails() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Consolidado pedidos"); const ult = sheet.getLastRow(); const plantillaTexto = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Platilla Email").getRange(1, 1).getValue(); for (let i = 2; i <= ult; i++) { const actualEmail = sheet.getRange(i, 11).getValue(); const pedido = sheet.getRange(i, 3).getValue(); const cliente = sheet.getRange(i, 1).getValue(); const condicion = sheet.getRange(i, 6).getValue(); const condicion2 = sheet.getRange(i, 12).getValue(); if (condicion === "ENVIADO" && condicion2 == "NO") { // Personalizar el contenido HTML const emailTexto = plantillaTexto .replace("{name}", cliente) .replace("{pedido}", pedido) .replace("{imagen}", '<img src="URL_DE_TU_IMAGEN" alt="Descripción de la imagen" style="max-width:100%; height:auto;">'); const asunto = "Tú pedido #" + pedido; // Enviar el correo en formato HTML MailApp.sendEmail({ to: actualEmail, subject: asunto, htmlBody: emailTexto }); } } } nota: Asegúrate de que la imagen sea accesible públicamente en la web y he añadido una línea para insertar una imagen en el correo. Debes reemplazar URL_DE_TU_IMAGEN con la URL de la imagen que quieras usar. Espero te sirva y quedo atento a tus comentarios
Muy buenos videos... Saludos desde México. Pregunta, que pasa si necesito mandar correos pero desde distintas cuentas, es decir, una desde info@correo, otro desde atencionclientes@correo y otro de caja@correo??? Hay personas de estás áreas que interactúan con el sheets y cada paso mandara correos desde distintas cuentas. Cómo se haría???
Hola amigo, espero te encuentres bien, el servicio MailApp solo enviará correos desde la cuenta que ejecuta el script. Hasta donde tengo conocimiento. Saludos y quedo atento
Muy bueno el video Carlos. Quisiera hacerte una consulta. Soy principiante en este tema. Mi pregunta es como puedo hacer para que los datos no se carguen en la última fila de la tabla sino q se inserte en la primera bajo el encabezados, por ejemplo en la fila 2 o sea que la información vaya desde la actual a la mas antigua. Muchas gracias
Hola Beto, si se puede, déjame las casillas que debería llevar el formulario y tu correo, para enviarte la solución.
Excelente video amigo, estoy en el mundo del desarrollo web y diseño gráfico mas o menos hace dos años y nunca habia escuchado el entorno de Apps Script, pero con tus videos aprendi la estructura y me resulto util esta herramienta, gracias..Nuevo Suscriptor..
Hola Sergio, muchas gracias por el apoyo, espero te sirva el contenido, saludos
Buenas tardes estimado. Estoy con el siguiente dilema. Tengo una hoja1 principal donde trabajo con nombre, origen,destino y otras columnas. Tengo otra hoja2 que trabajo con IMPORTRANGE para extraer ciertas columnas que son el nombre, origen y destino. agrego una nueva columna que se llama saldo. Anoto los gasto que tienen cada nombre. El problema que se me genera que al momento de eliminar una fila de la hoja1 principal se elimina automaticamente en la hoja2. Pero queda el saldo en la columna llamada saldo. Como puedo hacer que si borro una fila de la hoja1 tambien se borre completo en la hoja2. Quedo atento a su comentario.
Hola Elena, esto se debe a que el Importrange, es un espejo de datos de la hoja de origen, al eliminar los datos de origen en el destino también, ahora bien, como los datos de la columna saldo no son desde el origen si no que son propias de la hoja dos, por eso no se borra por completo, yo te recomiendo que por medio de app script copias datos de un origen a un destino, le agregas un disparador automático para que el script se ejecute solo, le configuras cada cuanto o en que momentos quieres que corra, le pones el saldo en la hoja destino y al script le agregamos un for con un condicional para que busque los datos en el origen y si no lo encuentra elinime toda la fila de la hoja 2, para esto necesitas una llave, puede ser el nombre, debe ser un dato que este en las dos hojas.
Buen video estimado. Como puedo hacer. Si borro un dato en A7. Quiero que se borre toda esa fila. Seria B7-C7-D7-E7...... ESTOY EN ESE DILEMA
Hola, espero te encuentres muy bien, este video te puede servir th-cam.com/video/eO_qoZFZ5CM/w-d-xo.html puedes agregar una columna marcada como eliminar, esa puede ser la condición, entonces el script lo que hace es que si encuentra una celda con eliminar ejem A2 el elemina todo la fila, también puedes poner que si la celda A2 es vacía, solo pones las comillas en el if
Como puedo detener la función al cumplirse la función IF: por ejemplo si la celda es <=0 a otra celda hoja formulario celda G15 es <= a 0 de la hola stock en el rango F3:f41 este es mi código // Guardar celdas function Guardar() { var hojaActiva = SpreadsheetApp.getActiveSpreadsheet(); var FORMULARIO = hojaActiva.getSheetByName("FORMULARIO"); // Nombre de hoja del FORMULARIO var REGISTRO_ENT_SAL = hojaActiva.getSheetByName("REGISTRO_ENT_SAL"); // Nombre de hoja donde se almacenan REGISTRO_ENT_SAL // Celdas de donde se obtendrán los REGISTRO_ENT_SAL a guardar var valores = [[FORMULARIO.getRange("D9").getValue(), FORMULARIO.getRange("G9").getValue(), FORMULARIO.getRange("D11").getValue(), FORMULARIO.getRange("G11").getValue(), FORMULARIO.getRange("D13").getValue(), FORMULARIO.getRange("D15").getValue(), FORMULARIO.getRange("G15").getValue()]]; // Inyección de REGISTRO_ENT_SAL a hoja donde se almacenan REGISTRO_ENT_SAL REGISTRO_ENT_SAL.getRange(REGISTRO_ENT_SAL.getLastRow() + 1, 1, 1, 7).setValues(valores); // El "7" se cambia por cantidad de REGISTRO_ENT_SAL a almacenar
Puedo usarlo para el codigo en html en visual studio, se puede implementar el mismo codigo? o tiene que ser directamente desde App Script, o como puedo hacer?
Buenas tardes Gabriela, espero te encuentres muy bien, te envié la respuesta por email, pero si tienes dudas al respecto, por favor vuelve a escribirme. Saludos
Me salvaste la chamba jaja, graciasssssssssss
Hola amigo, excelente, que bueno que el contenido tenga un impacto positivo, acá estamos para ayudarnos, muchas gracias por el comentario.
¡Muchas gracias!, me ayudó bastante el tutorial. Yo buscaba leer mi arreglo para que cada que se agregue una nueva fila, insertar una casilla de checkBox en cierta columna y tu código me sirvió de guía y base. ¡Sigue así! Y gracias por tus contribuciones, nos ayudan bastante.
Excelente amigo, me alegra mucho que sea de utilidad, precisamente la idea con estos videos es poder resolver retos que se nos presenten o por lo menos que sirvan de base, muchas gracias por el comentario. Saludos
eres un crack Gracias. Pregunta como puedo seleccionar desde una tabla, es decir se puede usar llamando solo la tabla, o si o si necesito llamar la hoja. tks
Hola Camilo, espero te encuentres muy bien si la tabla se encuentra en un rango, se puede tomar este dentro del script, pero siempre debes activar el archivo y la hoja a la que debe apuntar el Script. Saludos y quedo atento.
Excelente, gracias por la explicación, necesitaba el formato de hora luego de enviar los datos
Hola, espero te encuentres bien, que bueno que te sirva. Saludos
Hola Carlos, buenos dias. Porfavor podrias hcer un video donde se elimine una fila en base a un dato duplicado en una columna. gracias
Hola Diego, claro que sii, sus aportes son muy importantes para que podamos construir conocimiento juntos
Carlos G, te cuento que a mi no me dejo ejecutar, textualmente esto me sale "Este proyecto requiere que concedas acceso a tus datos", que hago en este caso :(.
Hola, espero te encuentres bien, es un tema de permisos, le debes dar permiso al script para que ejecute, cuando le des ejecutar te debe aparecer una ventana que te pide los permisos, le das los permisos y el script se dede ejecutar, también ten en cuenta que debes tener permisos como editor en ambos archivos o ser el dueño
@@carlosg89 sii, mil gracias lo logre... gracias.... en tu canal hay algún tutorial para agregar un botón de actualización? :)
Super, me alegra que lo lograste, cualquier cosa me dejas el comentario para ayudarte. Existe uno video sobre como crear un menú que básicamente funciona igual que un botón y se ejecuta como opción más de la barra de opciones th-cam.com/video/Thp9kCdJXKw/w-d-xo.htmlsi=FyrciEp96c6oUq1d
Lo veré y lo pondré en práctica, gracias... por cierto estoy suscrito 💪.
Eso Litos!!!!! 🥳💪✨
Esoo Jotaa!!!
Muchas gracias estimado amigo, necesitaba tu valiosa ayuda. Un abrazo.
Hola, me encanta que el contenido sea de ayuda, saludos
Hola, tengo una planilla con varios scripts asignados a botones. Cuando uso en la PC funciona correctamente, cuando pulso el botón desde el móvil solo me seleccionar para editar el botón, nisiquiera reconoce que tenga una función asignada. Cómo puedo solucionarlo?
Hola, cómo estás?. Los botones en Google Sheets están diseñados principalmente para la interfaz de escritorio. En la versión móvil de Google Sheets, la interacción con los botones no funciona de la misma manera. En lugar de ejecutar la función asignada, los botones suelen permitir la edición, lo cual es una limitación de la plataforma móvil. una alternativa que se puede hacer es crear un menú personalizado en la hoja de cálculo que permita ejecutar los scripts. Los menús personalizados funcionan tanto en la versión de escritorio como en la versión móvil de Google Sheets, te dejo el ejemplo del código para agregar el menú function onOpen() { var ui = SpreadsheetApp.getUi(); ui.createMenu('Mi Menú Personalizado') .addItem('Ejecutar Script 1', 'miFuncion1') .addItem('Ejecutar Script 2', 'miFuncion2') .addToUi(); } function miFuncion1() { // Tu código para la función 1 } function miFuncion2() { // Tu código para la función 2 } otra de las opciones es utilizar una función onEdit para que se ejecuten las macros, esa forma es la que se utiliza en el video que comentas. Saludos y espero sea de utilidad las respuestas
si borro un registro de la hoja donde cojo los datos, tambien se me borra en la hoja que cree del macro ? o permanece
Hola Martha, espero te encuentres muy bien, disculpe pero si comprendo bien, si borras un dato en una hoja, no se debería borrar en la otra hoja, ahora bien y solo para aclarar, con el código de este video si copias datos de una hoja a otra, los datos se van a sobre escribir. Saludos
excelente! me sirvio muchisimo
Hola, me alegra mucho que te sirvió, ese es el sentido del canal, crear contenido que les ayude a resolver las dudas, adicionalmente recuerda que tenemos otro video similiar a este, pero que consolida los datos, lo que permite guardar un historial sin necesidad de reemplazar los datos ya copiados. th-cam.com/video/ZTu7svhIMsc/w-d-xo.html
Buenas tardes estimado, consulta. Como puedo eliminar toda una columna. Al momento de borrar un dato de la primera fila. Que puede ser a1, a10, etc. Lo que quiero decir que al momento de borrar un dato se elimine toda la columna.
Hola Hector, para eliminar toda una columna en Google Sheets al borrar un dato en la primera fila de esa columna utilizando Google Apps Script, puedes aprovechar el disparador onEdit. Este disparador se activa cada vez que se edita una celda en la hoja. Ejemplo: function onEdit(e) { const sheetName = 'NombreDeTuHoja'; // Cambia esto por el nombre de tu hoja específica const sheet = e.source.getSheetByName(sheetName); const range = e.range; // Asegúrate de que la edición ocurra en la hoja específica if (!sheet || sheet.getName() !== sheetName) { return; } // Verificar si la celda editada está vacía (borrada) if (range.getValue() === '') { const column = range.getColumn(); sheet.deleteColumn(column); } }
Carlos buen día, quisiera saber si existe la posibilidad de que automáticamente el archivo envíe los mensajes sin necesidad de darle que ejecute. Por ej yo le puse la condición que cuando el estado sea "Pendiente de facturación", me envíe un recordatorio, pero no quisiera tener que entrar todos los días y darle que ejecute el comando de envío de correos. No sé si esto sea posible, gracias!!
Hola Catalina, lo que puedes hacer es crear un activador sin necesidad de código, para eso haces lo siguiente: En el Editor de Apps Script, haz clic en el ícono de reloj (⏰) Activadores en la barra de menú a la izquierda de frente a la pantalla, luego en la parte inferior derecha vas a ver una opción llamada añadir activador, luego se te abre una venta emergente y en la primera opción pones el nombre de la función que deseas que se ejecute, en la segunda opción dejas principal, luego en la opción que se llama selecciona la fuenta del evento hay varias posibilidades, selecciona según tiempo, escoge que alternativa se te acopla mejor a tu necesidad, por ejemplo yo utilizo mucho la que dice temporizador por días y luego en la opción siguiente escojo el rango de horas que se ajusta, ejemplo entre 8:00 a 9:00 (rango de horas en formato militar), esto va a crear un activador que ejecuta el código de forma automatica sin necesidad de código, es una muy buena opción que ahorra tiempo. adicional de adjunto un video al respecto. th-cam.com/video/bvAOQKSb5kw/w-d-xo.html
@@carlosg89 Genial! Ya lo pude automatizar completamente! muchas gracias por tu respuesta
amigo tengo un archivo con varias macros y necesito ejecutarlas desde un celular, logre ejecutar una insertando una casilla de verificación y asociandola a una funcion on edit ... necesito hacer lo mismo con otras macros pero no lo he logrado siempre se ejecuta solo una, acaso hay un limitante y solo se puede usar un on edit ? obviamente cada macro o funcion tiene su nombre distinto pero no logro llamarlas aiudaaaaaaa
Hola Jose, para ejecutar múltiples macros desde un dispositivo móvil utilizando casillas de verificación y la función onEdit, es importante tener en cuenta cómo funciona el disparador onEdit. El disparador onEdit se activa cada vez que se edita la hoja, pero solo puede ejecutar una función a la vez. Sin embargo, puedes diseñar tu código para manejar múltiples casillas de verificación y ejecutar diferentes macros en función de cuál casilla de verificación se ha editado. Acá un ejemplo: Supongamos que tienes 3 casillas de verificación en las columnas A1, B1, C1 // Función onEdit que maneja múltiples casillas de verificación function onEdit(e) { const sheet = e.source.getActiveSheet(); const range = e.range; const value = e.value; // Asegúrate de que solo reaccione a cambios en la hoja deseada const targetSheetName = 'Sheet1'; // Cambia esto por el nombre de tu hoja if (sheet.getName() !== targetSheetName) { return; } // Identifica la casilla de verificación que se editó y ejecuta la macro correspondiente switch (range.getA1Notation()) { case 'A1': if (value === 'TRUE') { myMacro1(); } break; case 'B1': if (value === 'TRUE') { myMacro2(); } break; case 'C1': if (value === 'TRUE') { myMacro3(); } break; } } // Ejemplos de macros function myMacro1() { // Código de la primera macro SpreadsheetApp.getActiveSpreadsheet().toast('Macro 1 ejecutada'); } function myMacro2() { // Código de la segunda macro SpreadsheetApp.getActiveSpreadsheet().toast('Macro 2 ejecutada'); } function myMacro3() { // Código de la tercera macro SpreadsheetApp.getActiveSpreadsheet().toast('Macro 3 ejecutada'); } Saludos y espero te sirva
Hay alguna manera de hacer una copia de una hoja de cálculo y me conserve, además de la líneas de código, los activadores?. No encuentro la manera de hacerlo por ningún lado.
Actualmente no hay una forma directa de copiar activadores a través de la API de Google Apps Script. Por lo tanto, tendrías que recrear los activadores en la copia de la hoja de cálculo manualmente.
Como se coloca una imagen
Hola Isa un ejemplo puede ser este: <!DOCTYPE html> <html> <head> <base target="_top"> </head </head> <body> <h1>Nombre imagen</h1> <img src="drive.google.com/uc?id=ID_DE_LA_IMAGEN" alt="Mi imagen"> </b> </body> </html> con el elemento img el código sabe que vas a poner una imagen y con src traes el link donde tieenes la imagen, asegurate que el link sea de acceso publico para garantizar que funcione. Saludos
Hola, Carlos! Primeramente felicitarte y agradecerte por compartir tu conocimiento. Requiero por favor tu ayuda y/o recomendación(es) con la automatización de lo siguiente: Que me recomiendas o sugieres para automatizar el proceso para la integración de Google Sheet y Excel. Necesito automatizar una base de datos de Control y Seguimiento de Pedido de Producto, para el efecto tengo el escenario siguiente: Un SOLICITANTE (Que inicia el REQUERIMIENTO mediante HOJA de Google Sheet) El RESPONSABLE (Pedido y/o Compra), que continúa el proceso mediante una HOJA de Excel. El desafío es lograr interactuar (Conectar / Integrar) la Hoja de Cálculo de Google (SOLICITANTE) Sheet y Excel (RESPONSABLE Pedido y/o Compra), que a medida que se realice un cambio y/o modificación se refleje en el otro archivo. Los campos de la Base de datos, que tengo mi desafío de automatizar el proceso (Integrar si vale el término), son los siguientes: SOLICITANTE / N° REQUERIMIENTO / ID Producto / Descripción Producto / QNT / Observación(es)_1 / Adjunto_ SOLICITANTE/ QNT Disponibilidad Inventario / Observación(es)_2 / N° PEDIDO / QNT Disponibilidad Proveedor / QNT Solicitada Proveedor / Observación(es)_3 / Adjunto_RESPONSABLE / Status_PEDIDO(Iniciado, Cotización, Pago, Conf. Embarque, Embarque, Transito, Almacén) / Observación(es)_4 / No O.C. / Observación(es)_5 / Fecha estimada Entrega / Fecha Entrega / Observación(es)_6 / Fecha Estimada de Llegada Almacén / Fecha de Llega Almacén / Observación(es)_7 / Fecha Estimada Disponibilidad Sistema / Fecha Disponibilidad Sistema/ Observación(es)_8 El SOLICITANTE, inicia el REQUERIMIENTO en la HOJA Google Sheet, registrando la información, en los campos siguientes: SOLICITANTE / N° REQUERIMIENTO / ID Producto / Descripción Producto / QNT Requerida Mínima / QNT Requerida Máxima / Observación(es)_1 / Adjunto SOLICITANTE. El RESPONSABLE de la Gestión de Pedido y/o Compra, pueda ver en su HOJA de Excel, el/los Requerimiento(s) del SOLICITANTE registrados en la Hoja Google Sheet , es decir, que con dicha información inicia la Gestión de Pedido y/o Compra. Iniciada la Gestión de Compra, el El RESPONSABLE de la Gestión de Pedido y/o Compra, tiene que ir llenando (Registrando) los Campos, siguientes: QNT Disponibilidad Inventario / Observación(es)_2 / N° PEDIDO / QNT Disponibilidad Proveedor / QNT Solicitada Proveedor / Observación(es)_3 / Adjunto_RESPONSABLE / Status_PEDIDO(Iniciado, Cotización, Pago, Conf. Embarque, Embarque, Transito, Almacén) / Observación(es)_4 / No O.C. / Observación(es)_5 / Fecha estimada Entrega / Fecha Entrega / Observación(es)_6 / Fecha Estimada de Llegada Almacén / Fecha de Llega Almacén / Observación(es)_7 / Fecha Estimada Disponibilidad Sistema / Fecha Disponibilidad Sistema/ Observación(es)_8 El registro y/o modificación que realiza el RESPONSABLE de la Gestión de Pedido y/o Compra en la HOJA de Excel, tiene que reflejarse en la Hoja de Google Sheet del SOLICITANTE. Se simplificará muchísimo si todo se manejase en una sola base de datos, ya sea Google Sheet o Excel. El motivo obedece a que tengo un problema de afinidad con las personas que interactúan y/o participan en el procedimiento . Uno es más afín a Google Sheet y el otro a Excel, lo que a la vez hace interesante el desafío.. Espero haberme dado a comprender… 😀 Quedo atento a tu comentario y/o recomendaciones para el desarrollo del presente desafío. De antemano gracias por la atención y respuesta al presente. Saludos cordiales, Vélez Marcelo
Hola Carlos, ¿hay alguna manera de modificar el ancho de la barra lateral donde has integrado el formulario?
Hola Angel, Si estás trabajando con la función showSidebar(html) en Google Apps Script, como es el caso, es importante destacar que el ancho de esta barra lateral no es directamente configurable mediante CSS. El ancho de la barra lateral está determinado por el diseño predeterminado de la interfaz de usuario de Google Workspace.
buenos videazos hermano, cuando crearas un formnulario con barra predictora segun lo que escribo vinculado a una base de nombre en google sheets?, gracias
Hola Amigo, actualmente estamos trabajando para sacar un serie de videos sobre cómo construir formularios HTML y Apps Script, desde lo más básico hasta avanzados, la idea es entender cada parte. Saludos
@@carlosg89 QUE gran video, una consulta veo que hay muy oco material de gas en tutoriales ytb, asi no aprendere mucho. recomiendas que lo haga enn python y conectar a google? un formulario avanzado con una barra predictora, me ayudarias mucho hermano
Amigo, como se puede hacer esto mismo pero desde un html? Para poder incluir imagenes
Hola Andrés, primero crear un archivo html en el editor de secuencia de comandos, por ejemplo <!DOCTYPE html> <html> <head> <title>Facturas</title> </head> <body> <p>Hola, saludos cordiales</p> <p>Este es un correo electrónico de ejemplo con una imagen:</p> <img src="URL_DE_LA_IMAGEN" alt="Descripción de la imagen"> <p>Saludos,</p> <p>Tu nombre</p> </body> </html> luego creas otro archivo, esta vez tipo apps script y vamos a crear un código donde el destinatario, el asunto del correo se obtienen automaticamente de la columna A y B de la google sheet, además el disparador para enviar el correo es cuando se cambie el estatus a Enviar en las celda correspondiente en la columna C function enviarCorreo(e) { var filaModificada = e.range.getRow(); // Obtener la fila que se modificó var hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var destinatario = hoja.getRange("A" + filaModificada).getValue(); // Obtener el destinatario de la columna A var asunto = hoja.getRange("B" + filaModificada).getValue(); // Obtener el asunto de la columna B var estado = hoja.getRange("C" + filaModificada).getValue(); // Obtener el estado de la columna C // Verificar si el estado es "Enviar" if (estado.toLowerCase() === "enviar") { // Obtener la plantilla HTML del correo var htmlTemplate = HtmlService.createHtmlOutputFromFile('NombreDeTuArchivoHTML').getContent(); // Envío del correo electrónico MailApp.sendEmail({ to: destinatario, subject: asunto, htmlBody: htmlTemplate }); // Opcional: Puedes cambiar el estado a "Enviado" u otra etiqueta para indicar que el correo ha sido enviado hoja.getRange("C" + filaModificada).setValue("Enviado"); } }
Hola, te agradezco por tan valiosa información; quiero saber tambien sirve para subir videos, audios y cualquier tipo de archivos o se debe hacer alguna modificación.
Hola amigo, espero te encuentres muy bien, sirve para cualquier tipo de archivo, ten en cuenta el tamaño de los archivos, ya que entre más pesados, más lento irá el proceso. Saludos
@@carlosg89 Muchas gracias por tu respuesta y explicación, tendré en cuenta lo del peso.
Buenos dias Excelente video. Consulta y si quiero borrar filas que contenga una palabra especifica dentro de frases?
Hola, espero te encuentres muy bien, lo que puedes hacer es que en el bucle no pones === en lugar de eso pones == saludos y quedo atento
Cómo puedo convertir el primer rango [i] [0] a string esque de esa parte copia y pega una serie de números que empiezan con 000 pero elimina los ceros y no quiero que los eliminé, ya intenté de todo, dando formato a las celdas,etc .
Hola, espero te encuentres muy bien, lo podemos hacer agregando por ejemplo en ss.getRange("A1:A").toString(); esto convierte los valores en texto,n tambien construyendo una variable por ejemplo; var convert = ss.getRange("A1:A").toString(); al inicio del código, espero que te sirva y saludos
Excelente trabajo amigo, una consulta hay alguna manera de cambiar el tamaño del la barra? sin que se cree una barra de desplazamiento
Hola amigo, espero te encuentres bien, eso se puede hacer aplicando en el CSS este linea: form { width: 400px; } Esto aplica un ancho al formulario, debes ir probando hasta tener el ancho adecuado sin que se genere una barra de desplazamiento. Espero te sirva, saludos
Se pueden ocultar filas con un boton? o con checkbox?
Hola, espero te encuentres muy bien, te comparto un código que crea un botón en la barra de opciones de la google sheet con las funciones de mostrar y ocultar filas, espero te sirva, saludos. function onOpen() { var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var menuItems = [ {name: 'Ocultar Filas', functionName: 'ocultarFilas'}, {name: 'Mostrar Todas las Filas', functionName: 'mostrarTodasLasFilas'} ]; spreadsheet.addMenu('Filas', menuItems); } function ocultarFilas() { var sheet = SpreadsheetApp.getActiveSheet(); var selection = sheet.getSelection(); var range = selection.getActiveRange(); if (range.getNumRows() > 0) { // Oculta las filas seleccionadas range.activate(); range.offset(0, 0, range.getNumRows()).activate(); sheet.hideRows(selection.getActiveRange()); } else { Browser.msgBox('Selecciona al menos una fila para ocultar.'); } } function mostrarTodasLasFilas() { var sheet = SpreadsheetApp.getActiveSheet(); sheet.showRows(sheet.getRange(1, 1, sheet.getMaxRows(), 1)); }