Enviar PDFs masivos personalizados con gráficas y tablas desde Google Sheets y Google Apps Script
HTML-код
- Опубликовано: 9 янв 2025
- En este video vemos como crear múltiples PDFs personalizados a partir de una pestaña con un dashboard o informe, el cual puede tener gráficas, tablas dinámicas y más
👍 Si te ha gustado este video, te encantará el curso gratis "Aprende Google Sheets en 2 horas". Aquí puedes obtener acceso juansguzman.co...
📋 Puedes encontrar el código y la plantilla de este video (y los más de 350 videos del canal) suscribíendote a mi academia JuanSGuzman - juansguzman.co...
🎓Allí mismo, encontrarás una serie de cursos de creación y envío de PDFs desde Google Sheets asi como más de 75 cursos completos de Sheets, Forms y Apps Script. Aquí puedes verlo juansguzman.co...
📝 Puedes encontrar este tutorial en forma escrita aquí juansguzman.co...
🔔 Suscríbete al canal donde recibirás nuevos videos semanales de Sheets, Forms, Apps Script y más.
Aquí algunos canales donde me puedes seguir y apoyar:
📨 - Newsletter: juansguzman.co...
➤Patreon: juansguzman.co...
➤Telegram: juansguzman.co...
➤Instagram: juansguzman.co...
ⓕ - Facebook: juansguzman.co...
➤Tiktok: juansguzman.co...
𝕏 - (Twitter): juansguzman.co...
Cualquier sugerencia, pregunta o inquietud, te invito a comentar más abajo
📝 Listas de Reproducción relacionadas
Crear PDFs - • Como crear PDFs desde ...
▶️Videos Relacionados
Crear PDFs desde 0 a partir de archivos, hojas o rangos de Google Sheets - • Como crear PDFs desde ...
Enviar un PDF a partir de datos de una tabla- Parte 1 - • Generar un documento d...
Enviar un PDF a partir de datos de una tabla- Parte 2 - • Generar masivamente do...
Enviar un PDF a partir de datos de una tabla- Parte 3 - • Enviar PDFs personaliz...
Función FILTER - • Funciones Avanzadas en...
Tablas dinámicas - • Crear Tablas Dinámicas...
Características del nuevo editor de Google Apps Script 2020 - • Explorando las princip...
Como bien me lo reporto un alumno de la academia, puede haber un problema cuando tenga que crear muchos reporte (más de 50 o 100), ya que el límite de tiempo de ejecución es de 6 minutos. Aquí si podemos usar el sleep u otras técnicas. Quedo pendiente de sus sugerencias para ver si podemos hacer otro video para estos casos.
Excelente Sr. Juan, como todos tus videos.... Sugiero que hagas un video donde se explique paso a paso poder imprimir dichos reportes, obviamente de manera automática con GAS. He buscado información al respecto y entiendo que es super COMPLICADO.
@@gus1191986 Hola
Te refieres a imprimirlo físicamente en una impresora?
Un gran saludo!
@@JuanSGuzman si correcto. Imprimirlo físicamente en una impresora.
@@gus1191986 Excelente. Lo investigo. Saludos!
Uy en que video sale eso del SLEEP me suena interesante y necesario para mí. Pasaba por aquí a pedirte algo Juan, cuando no yo jodiendo je, quisiera saber si hay alguna formula que indique en que ubicación se encontraba el dato que mandé a buscar.
Desarrollo: hago un QUERY sobre una tabla de 4000 datos mas o menos, en la celda contigüa uso varios BUSCARV para hacer unas restas según determinadas sitaciones, me gustaría ahorrarle el tiempo de buscar al BUSCARV incorporandole la dirección de la busqueda realizada por el QUERY.
Desde ya muchas gracias Juan por tu tiempo
Excelente video, muy practico y didactico, felicitacionies. Un capo
Hola!
Gracias a ti por tomarte el trabajo de comentar!
Saludos!
Excelente conocimiento, si asi es el instructivo en esta plataforma, las clases han de ser aun mejor
Mil gracias por tus palabras!
Eres genial ... tu tutorial me acaba de ayudar mucho para la generación de PDF con datos dinamicos ..
Hola
Excelente! Me alegra ser de utilidad.
Un gran saludo!
Están muy buenos tus videos, es muy productivo lo que enseñas y de una forma clara y precisa, felicitaciones y muchas gracias.
Mil gracias!
Me costó adaptarlo, pero lo he conseguido, realizo feed a ejecutivos con datos concatenados con una serie de formulas, me vino a ayudar mucho esta programación. gracias.
Excelente!
Me alegro lo hayas conseguido
Saludos!
Muchas gracias Juan por estos aportes, todos los tips son de mucha ayuda, que tengas un excelente día.
Hola!
Mil gracias por las palabras!
Saludos!
Muy buen video Juan! Use cosas de este y del de generar PDF para manda una hoja por mail y salio excelente! Como siempre digo, en tus videos hay mucha info adicional al tema que estas charlando y los comentarios de cada video son otro extra ya que la gente que te sigue aporta con muy buenas preguntas que vos respondes y hacen un combo perfecto! Muchas gracias por compartir!
Mil gracias Oscar
Como siempre que amables comentarios, que motivan a seguir
Saludos!
Muchas gracias Juan S. Guzmán!!!
Gracias a ti por comentar!
Muchas gracias por compartir, excelente video, saludos y bendiciones.
Gracias a ti!
Magnífico, como siempre, Juan!
Mil gracias!
te agradeceria si pudieras hacer uno para 50 o mas personas, realmente me gusta tu contenido, solo no entiendo por que no tienes mas likes o suscriptores, tu contenido vale realmente la pena!
Hola MArco
Mil gracias por tus palabras!
Si, ya es hora de hacer una segunda parte
Un gran saludo!
Estimado Juan, me estoy reventando la cabeza con el setValue(Url) luego del envío de cada mail. Tus videos son lo mas! Pero si me puedes contestar ese punto, podria al fin descansar jaja.
Gracias.
Slds.
Mis amigos! Lo resolví! no usando foreach (me tiene de hijo), adapte el código para usar un bucle i. Todo gracias a Juan!
Excelente lo máximo Juan 20
Excelente video, Crack.
Gracias a Andrés y Giancarlo de la academia que descubrieron que se resuelve el error de que a veces crea archivos html y pdf añadiendo la linea Utilities.sleep(10000) dentro del forEach, al final. Esto se debe a que el proceso de creación de archivos toma entre 5 y 7 segundos, por lo que si le damos 10 segundos de espera resuelve este error
Hola Juan. El video es genial. Tuve los dos problemas: en el que se me genera una página del pdf con el inicio de sesión y en el que me genera el html. Pero con la respuesta que le diste a José Minjares, me quedó todo resuelto. Ahora quiero saber, cómo reemplazo el archivo que se me genera. Es decir, que no tenga un montón de copias del mismo, cada vez que lo genero, sino que se reemplace el archivo anterior. En este caso, que no se me modifique el link del archivo. Muchas gracias por tus videos y ayudas, ya mismo voy a suscribirme
Hola Hernando
No hay forma (que yo sepa) de reemplazarlo directamente
Lo que se me ocurre es que borres el que haya en la carpeta antes de crear el nuevo
Saludos!
@@JuanSGuzman Muchas gracias por la respuesta. Si, también hice lo de borrar el archivo, pero el problema es que el link cambia y es lo que quería conservar. Seguiré cacharreando y si encuentro solución, no dudaré en realimantar. Muchas gracias
@@hernandoeg Quedo pendiente. Saludos!
Genio
;)
Hola Juan.. te felicito por tus videos.. la verdad me ayudaron muchísimo en varias cuestiones de base de datos. Te hago una consulta si se puede usar Google Sheets como datalogger de una aplicación de Windows. Saludos y gracias
Hola Mauricio
Mil gracias por tus palabras!
Te confieso total ignorancia en cuanto a ese tema.
Te lo quedo debiendo
Un gran saludo!
Juan he seguido a paso tu programacion, algunos ejemplos si me funcionan. Este caso, me crea un archivo en xhtml, que no se puede leer, es decir no lo convierte a PDF, tiene que ver con la version de sheets?
Hola!
No, revisa la parte del fetchUrl que las comas y todo esten igualitas, a ver si te funciona
Saludos!
Hola,
Una duda, alguien sabe si hay forma de que en el pdf aparezca el encabezado y pie de pagina que tiene el spreadsheet? O si se pueden asignar directamente desde el codigo?
No existe la función delay?
Hola!
Hasta donde se, no existe en google apps script. No se si de pronto se pueda instalar
Un gran saludo!
Una pregunta. ¿autocrat es gratis? ¿Se puede generar pdfs sin límites?
Auotcrat es un complemento de google sheet que genera pdfs de personalizados
Hola!
Creo que es freemium, o sea que tienes un límite de pdfs a generar o algo asi
Saludos!
Hola Juan, una consulta, como instalo el Foreach?ya que no aparece activa en la macro
Hola!
No hay que instalar nada
Simplemente tienes que asegurarte que de lo q estas haciendo forEach es un arreglo
Esto lo puedes hacer con este comando
Looger.log(arreglo)
Y te tiene que salir algo asi
[["valor1","valor2"],
["valor1","valor2"]]
Saludos!
Hola, Juan.
Son excelentes tus videos. Muchas gracias por hacerlos.
Realice el ejercicio, pero me enfrente y enfrento a varios problemas. 😅
El primero si lo pude resolver no me generaba pdf solo código html, con un gesAs como lo haces en uno de tus videos, en lugar de un getBlob. Y ya me salió un pdf.
Ahora me sale el pdf, pero no de la hoja que le pido, si no de una imagen de account access. ¿Qué crees que pueda ser?
Hola!
Te cuento que me pasó volviéndolo hacer lo mismo
Cópiate el código exacto a ver como te va
Aquí te dejo la plantilla 🤫
docs.google.com/spreadsheets/d/1_RXq6IBjen4p1MYbRxksqU3Sx0-Jl58kjgpY95Ks0aY/copy
Saludos!
Muchas gracias, Juan.
Una disculpa por la tardanza en mi respuesta.
Si sirvió, te agradezco mucho.
@@joseminjares5619 Genial!
Que tal, Juan.
Oye, la duda que tengo es acerca de la configuración de la página, más específicamente en la parte de los saltos de página, esto para asegurar que no salgan cortadas o truncas las tablas o gráficas.
Si pudieras darme una orientación, estaría más que agradecido.
Te paso la solución que estoy usando
+'&size=11.8x8.7' //dimensiones en pulgadas sino (0=letter, 1=tabloid, 2=Legal, 3=statement, 4=executive, 5=folio, 6=A3, 7=A4, 8=A5, 9=B4, 10=B5)
los valores que puse fueron por prueba y error, manteniendo mi rango al 100%
@@matesyfaturas3783 gracias, lo checaré
Hola JuanS muchas gracias por tus videos. Quisiera que los pdf que se crean los pueda visualizar cualquier persona con el enlace.. no se si me puedes ayudar
Hola Luis
Trata con este
archivo.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
Un gran saludo!
una pregunta porque utilizas const en ves de var cual es la diferencia
Hola!
la verdad creo que siempre se podria usar var y no hay problema
const se usa para datos que nunca van acambiar...que se mantienen igual durante toda le ejeución
Me imagino que en programas muy grandes es bueno diferenciarlos para gastar menos memoria de pronto, pero para los programas pequeños que hacemos no se si haya alguna diferencia.
Un ingeniero de pronto nos podría resolver la duda
Saludos!
Hola, Buen día es que que tenía una pregunta, me esta pasando algo que es lo siguiente, no me está generando el pdf, sino un archivo de texto html no se si me puedas ayudar sería lo mejor 🙋🏻♂️
Hola Carlos
Ponle dentro del forEach al final esta linea
Utilities.sleep(10000)
Esto lo descubrieron dos alumnos de la academia (Andres y Giancarlo)!
Saludos!
Buenas tardes , quería depronto una ayuda , por más que intento no me genera PDF , por lo contrario me genera doc Google según parece con formato Html
Puedes incluir el siguiente comando
Utilities.sleep(10000)
Al final del forEach (dentro de él)
Saludos!
@@JuanSGuzman Hola buenas tardes, mcuhas gracias por los vídeos, disculpa ¿cómo quedaría esa línea el código?, tengo el mismo problema
¿Cómo quedaría esa línea en el código?, nuevamente gracias.
Creo que no resolvió el problema.
Maestro, a mi me pasó. Lo resolví cambiando los permisos para compartir del googlesheet. Debe estar disponible para todos.
por favor ayudame! gracias
17:39 eso le dije a mi alumna de la carrera cuando vino a que le enseñe hoja de calculo
Jaja
Saludos!