Enviar múltiples correos electrónicos en Google Sheets con un solo botón - Combinar correspondencia

แชร์
ฝัง
  • เผยแพร่เมื่อ 4 พ.ย. 2024

ความคิดเห็น • 137

  • @deibysyagola
    @deibysyagola 11 หลายเดือนก่อน +1

    Hola Buena Tarde, quiero felicitarte y darte las gracias por el apoyo que nos brinda. tus videos son de gran ayuda Dios te bendiga.

    • @JuanSGuzman
      @JuanSGuzman  11 หลายเดือนก่อน

      Hola!
      Que amables palabras! Mil gracias!
      Saludos!

  • @freddybrionesgutierrez9295
    @freddybrionesgutierrez9295 2 ปีที่แล้ว +1

    Hola excelente, gracias. ¿Se puede hacer lo mismo con un for y se pueden enviar adjuntos personalizados?

    • @JuanSGuzman
      @JuanSGuzman  2 ปีที่แล้ว

      Hola!
      Si y si, jaja
      Te dejo la lista de envío de correos
      th-cam.com/video/lPt5cAhnlFs/w-d-xo.html
      Saludos!

  • @bernardogudino8607
    @bernardogudino8607 2 ปีที่แล้ว +1

    Super bien explicado y claro!!! Mil gracias, mi trabajo se ha vuelto mucho más eficiente gracias a tus tutoriales. Grande Ing. Guzmán!

    • @JuanSGuzman
      @JuanSGuzman  2 ปีที่แล้ว +1

      Mil gracias Bernardo!

  • @benditofutbolcol
    @benditofutbolcol 3 ปีที่แล้ว +3

    Me estoy devorando todos tus videos. Excelentes, sigue así 💪

  • @valenfz
    @valenfz 4 ปีที่แล้ว +1

    Hola, Excelente video, y especialmente tienes un don para explicar, vas paso a paso totalmente claro , me ha ayudado muchísimo, seguí tus videos anteriores y este pero no supe como hacer para que me cambie el asunto por cada correcto.

    • @JuanSGuzman
      @JuanSGuzman  4 ปีที่แล้ว +1

      Hola!
      Mil gracias!
      Lo voy a explicar en la parte 2 de este, espero estrenarlo muy pronto
      Un gran saludo!

  • @yaelakingoytiaguerrero4376
    @yaelakingoytiaguerrero4376 ปีที่แล้ว +1

    Hola, excelente video. La verdad yo no sabía nada de Sheets hasta que llegue a tu canal, muchas gracias. Solo dos consultas. ¿Como puedo omitir la instrucción cuando en mi listado no tengo algún correo y no me lance error al ejecutar? y ¿Cómo puedo insertar una firma digital al final de cada correo enviado? esto último debido a que tengo la firma configurada pero no aparece una vez enviada.
    Espero me puedas instruir en esas dos consultas. ¡De antemano muchas gracias!

    • @JuanSGuzman
      @JuanSGuzman  ปีที่แล้ว +1

      Intenta cambiar el forEach así
      contactos.forEach(function(fila){
      if(fila[0]){
      var mensaje = crearMensaje(fila);
      GmailApp.sendEmail(fila[0], asunto, mensaje);
      }
      })
      Saludos!

  • @maximoramirezbiseno6566
    @maximoramirezbiseno6566 4 ปีที่แล้ว +1

    hola juan gracias por compartir tus conocimientos, solo para ver si pudieras decirme que cuando se realiza un formulario los resultados de este mismo, se vayan a una hoja de calculo y estos también a un correo.

    • @JuanSGuzman
      @JuanSGuzman  4 ปีที่แล้ว

      Hola!
      Que se vayan a una hoja de cálculo se puede hacer automáticamente simplemente enlazando el formulario con sheets
      Para el envió del mail, puedes usar este mismo código pero atarlo a un activador que se ejecute con el envío del formulario.
      Te dejo un video de activadores
      th-cam.com/video/lrQQrOA_uKw/w-d-xo.html
      Saludos!

  • @alejandrobenitez9807
    @alejandrobenitez9807 3 ปีที่แล้ว +1

    Impresionante la utilidad de tus vídeos y lo bien explicado.muchisimas gracias desde Argentina

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว

      Hola Alejandro
      Mil gracias por tus palabras!
      Un gran saludo!

  • @deyvercjuropena2916
    @deyvercjuropena2916 4 ปีที่แล้ว

    Muchas gracias por compartir su conocimiento!!! funciona perfectamente ..si el correo esta mal digitado ..sale error y deja de enviar ....es posible que si no esta correcto el correo continúe enviando a las siguientes celdas

  • @felipeaguila1760
    @felipeaguila1760 3 ปีที่แล้ว +1

    Nuevamente Muchas gracias Ing. Guzman por sus aportaciones
    Con esto vamos más allá de sheets, y combinamos con gmail, para automatizar funciones.
    Felicidades por el canal, la página, y todos cursos

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว

      Mil gracias por tus palabras Felipe!

  • @damarisgutierrezortiz294
    @damarisgutierrezortiz294 11 หลายเดือนก่อน +1

    Hola
    Me has ayudado un montón
    Mil gracias
    Casi no tengo conocimiento de programación y lo logré excelente explicación
    En mi trabajo debo enviar este mismo formato varios correos así como este cómo si fuera combinación de correspondencia, pero debe irse a uno o dos destinatarios y copia a mi jefe y/o jefes de los destinatarios
    He buscado y encontré correo con copia pero envío sencillo no con Plantilla....
    Ayudaaa cómo se llama el video?..
    Puedo copiar los códigos y pasarlos?🤯🤯
    Gracias gracias gracias

    • @JuanSGuzman
      @JuanSGuzman  11 หลายเดือนก่อน

      Hola!
      Gracias por tus palabras!
      con plantilla no cambia nada, usa las opciones
      GmailApp.sendMail(destinatario,asunto,mensaje.{
      cc:"jj@gmail.com",
      bcc:"jj@gmail.com",
      }
      Saludos!

  • @fernandosanchez82
    @fernandosanchez82 2 ปีที่แล้ว +2

    Hola! Juan ! Buen dia, como logro evitar que al oprimir enviar correo masivo me vuelva a enviar a los que ya fueron enviados ? y como logro colocar el OK de enviado automáticamente tambien en los envios masivos ? Muchas gracias !

    • @JuanSGuzman
      @JuanSGuzman  2 ปีที่แล้ว

      Hola Fernando,
      Aquí te dejo una serie de combinar correspondencia que te dara luces
      th-cam.com/video/8g2C15DkVbM/w-d-xo.html
      Saludos!

  • @iziv2467
    @iziv2467 3 ปีที่แล้ว

    EXCELENTE JUAN!!! Consulta: Necesito enviar por email turnos personalzidos (los cargados en la sheet) pero a su vez necesito el destinatario del correo me envie confirmacion de asistencia. Como puedo implementarlo? Desde Ya MILLON DE GRACIAS POR COMPARTIR TUS CONOCIMIENTOS

  • @rogercolque
    @rogercolque 3 ปีที่แล้ว

    Hola buen video
    Ese icono es de telgram.
    entonces hubo o habrá un video sobre envio de mensajes de sheets a telegram?

  • @damarisgutierrezortiz294
    @damarisgutierrezortiz294 11 หลายเดือนก่อน +1

    Hola Juan
    Por fa Tambien me pueee decir si en la plantilla puedo marcar texto en negrita? Por ejemplo el nombre del destinatario y a donde queda el registro de envio de correos no salen en mi Gmail 😢

    • @JuanSGuzman
      @JuanSGuzman  11 หลายเดือนก่อน

      Para esto tienes que usar plantillas html
      Te dejo un video
      th-cam.com/video/bDA7vZSaKNA/w-d-xo.html
      Saludos!

  • @WilliamAmayaDiaz
    @WilliamAmayaDiaz 2 ปีที่แล้ว

    Gracias por el video, ha servido de mucha ayuda. Pregunta: De que forma puedo enviar una selección a una variable ??

  • @jcpenato
    @jcpenato 4 ปีที่แล้ว +1

    Excelente JuanS. Sugiero complementar envío de correo adjuntando una archivo conformado por una copia de una de las hojas de mi archivo

    • @JuanSGuzman
      @JuanSGuzman  4 ปีที่แล้ว

      Hola Juan Carlos
      Muy buena idea
      La otra semana viene un video de adjuntos...después veremos la generación de PDFS
      un gran saludo!

  • @merlyangelicagamarrarojas1952
    @merlyangelicagamarrarojas1952 2 ปีที่แล้ว

    Hola Juan !
    Me ha ayudado mucho tus videos, una consulta , si quiero que en el mensaje del correo salga una fecha en formato fecha y hora , como lo podría modificar ?
    saludos cordiales . Buen inicio de año !

  • @tiiiagosoares
    @tiiiagosoares 3 ปีที่แล้ว +1

    Muchas gracias Juan. Me gustaria saber se hay alguna opción para agendar el envio masivo

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว +1

      Hola Tiago
      Claro que si, esto se hace con los activadores por tiempo
      Usas la misma función que hicimos aquí pero le creas un activador por tiempo
      Aquí te dejo un video
      th-cam.com/video/lrQQrOA_uKw/w-d-xo.html
      Saludos!

    • @tiiiagosoares
      @tiiiagosoares 3 ปีที่แล้ว

      @@JuanSGuzman muchas gracias por compartir sus conocimientos con nosotros.

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว

      @@tiiiagosoares Gracias a ti por tus amables comentarios!

  • @rafaelguardiola7165
    @rafaelguardiola7165 2 ปีที่แล้ว

    Juan Antes que todo lo felicito por su labor, referente a estos temas este es el mejor canal que existe. Gracias por compartir su sabiduría.
    Tengo una 2 preguntas, ojalá me pueda ayudar
    al enviar el correo de forma automática como puedo cambiar el formato de la fecha que aparece por default
    Wed Dec 22 2021 11:00:00 GMT-0500 (hora estándar oriental
    Cambiarlo por alguno distinto por ejemplo: 22/12/2021 11:00
    La segunda cuestión es que me aparece diferente la zona horaria que tengo capturada en mi hoja a la que se manda en el correo en automático, como hago para ambos tengan la misma zona horaria ??
    De antemano muchas gracias y nuevamente felicidades por todo su trabajo.

  • @joecampos07
    @joecampos07 4 ปีที่แล้ว +1

    Hola Juan he estado siguiendo tus videos y me han ayudado muchisimo para los envios de mail.
    La unica duda que me queda sobre el Mail Merge es: ¿puedo generar una huella que diga cuando se hizo el envio de todos los correos? Asi como en el video de enviar correo por fila que se dejaba la huella por cada fila. espero puedas ayudarme. Saludos.

    • @JuanSGuzman
      @JuanSGuzman  4 ปีที่แล้ว +1

      Hola Joe
      Mil gracias
      Claro que se puede.
      YA estoy trabajando en el segundo video de Mail Merge para explicar esto. Alguna otra sugerencia?
      Saludos!

  • @LUISEFEIZZ
    @LUISEFEIZZ 4 ปีที่แล้ว

    Hola, gracias he aprendido bastante con tus videos. En el caso que quiera enviar un correo masivo sin que cambie el texto a muchos contactos, ¿cómo puedo hacer para que se envíe un solo email?, para que no me consuma correos de mi cuota diaria. Ejemplo enviar un email para enviar un informe, necesito que se envíen a 20 contactos (de un listado vertical A2:A20), pero usando solo 1 correo de mi cuota diaria.

    • @JuanSGuzman
      @JuanSGuzman  4 ปีที่แล้ว

      Hola Felipe
      Mil gracias!
      Ya viste este video?
      th-cam.com/video/EZNieWrG_Dk/w-d-xo.html
      Ojalá te sirva
      Saludos!

  • @elkinsax
    @elkinsax 4 ปีที่แล้ว +1

    Hola Juan muy buena explicación, me gustaría que nos ayudaras para enviar un correo con imagenes y botones css para darle un poco mas de interactividad. muchas gracias

    • @JuanSGuzman
      @JuanSGuzman  4 ปีที่แล้ว

      Hola Elkin
      Acabo de publicar este video que creo que te ayudará
      th-cam.com/video/QccQGWxNCWA/w-d-xo.html
      Me cuentas si te sirvió
      Saludos!

  • @Pablor140
    @Pablor140 3 ปีที่แล้ว +1

    Juan, gracias por el vídeo. Estoy intentando aplicar el programa de “Mail Enviado” para que me ponga el OK cada vez que envía el correo pero me quedo estancado. Comentaste que harías un vídeo pero no lo he visto, me lo podrías explicar? Mil gracias, es que estoy teniendo problemas para establecer el número de fila dinámico para que vaya cambiando según qué fila este tocando. Gracias

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว

      Hola!
      No se si ya viste este video
      th-cam.com/video/D9ak2IYcEf8/w-d-xo.html
      Un gran saludo!

  • @By_FerchoST
    @By_FerchoST ปีที่แล้ว

    Hola esto sirve cuando el Sheets es resultado de un formulario que va alimentando es deir en el Sheets los registros van incrementando?

    • @JuanSGuzman
      @JuanSGuzman  ปีที่แล้ว

      Claro que si
      Debería funcionarte
      Saludos!

  • @mhcastillof
    @mhcastillof 3 ปีที่แล้ว +1

    Una consulta, si tengo una cuenta empresarial pero es de outlook, hay alguna alternativa

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว

      Hola Manuel
      Obligatoriamente debes tener gmail, pero puedes hacer algunos trucos como en este video
      th-cam.com/video/9ebNJcR9k9c/w-d-xo.html
      Saludos!

  • @nelsonpicon4901
    @nelsonpicon4901 2 ปีที่แล้ว

    muy bueno el contenido, podria hacer las letras de mayortamaño.gracias

    • @JuanSGuzman
      @JuanSGuzman  2 ปีที่แล้ว

      Hola!
      Muchas gracias por la sugerencia! Voy a ponerla en práctica
      Saludos!

  • @JanLuOsmar
    @JanLuOsmar 4 ปีที่แล้ว

    excelente se podria poner check para indicar cual se va a enviar dado que puedo tener como indica google maximo 100 y deseo enviar hoy dia un ejemplo 100 mañana los otros 100 que me falta pero tengo mas de 400 correos por enviar como poner una marca en que me he quedado por enviar

    • @JuanSGuzman
      @JuanSGuzman  4 ปีที่แล้ว

      Hola en unos pocos días sale la segunda parte , y creo que te va a servir mucho.
      Saludos!

  • @algoritmolegal
    @algoritmolegal 3 ปีที่แล้ว +1

    Inge, se puede adjuntar archivos para enviarlos de manera individual a cada correo ?

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว +1

      Hola
      Claro que si
      Aquí te dejo el video
      th-cam.com/video/w6UOy1PPXV4/w-d-xo.html
      Un gran saludo!

    • @algoritmolegal
      @algoritmolegal 3 ปีที่แล้ว +1

      @@JuanSGuzman Gracias profe, sería bueno que hiciera un vídeo de cómo envíar mensajes y archivos personalizados por Whatsapp desde sheets 💪

    • @JuanSGuzman
      @JuanSGuzman  2 ปีที่แล้ว

      @@algoritmolegal Hola! Al fin lo lancé hace algunos meses. No es el mejor, pero ha servido a algunos. Gracias por esa sugerencia. Saludos!

  • @fitubocci
    @fitubocci 3 ปีที่แล้ว

    Hola Juan! Como estás? En el caso que quiera incluir en un mismo mail, información de varias filas que contengan check box en TRUE (para poder delimitar que filas quiero enviar) cómo debería indicarle eso mismo al código? Gracias!

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว

      Hola Fiorella
      Muy interesante el reto
      Lo dejo para un video
      Un gran saludo!

  • @josued.caycho5598
    @josued.caycho5598 3 ปีที่แล้ว

    Buenos días Juan, muchas gracias por tu vídeo, quería hacerte una consulta con respecto al vídeo, sería posible enviar más correos del limite de 100 por día, por ejemplo compartiendo el google Sheets y desde las otras cuentas compartidas enviar más correos?, excelentes vídeos.

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว

      Hola Josue
      Mil gracias por tus palabras!
      Pues la forma más fácil es avanzando a un plan pago
      Yo creo que siempre envía del correo del propietario, por lo que lo único que se me ocurre es tener varias bases y que de alguna manera se alimenten y se comuniquen con IMPORTRANGE o con un código cuando ya se hayan enviado otros correos
      Un gran saludo!

  •  4 ปีที่แล้ว

    Hola Juan, muy bueno, como siempre.
    Tengo Plantillas diferentes en las que cambio un poco el texto según algunas particularidades del contacto. Con el envío individual, pongo la plantilla en una columna al lado de cada contacto y la puedo invocar con el recurso de que tome esa columna de la fila activa.
    Pero en este caso de envío masivo, no logro saber como hacer lo mismo. ¿Cómo puedo hacer para que tome la plantilla ubicada en cada fila en vez de que la levante de una celda puntual?
    No sé si logro explicarme.
    Saludos.

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว

      Mil disculpas Matias por la demora
      Estas preguntas más difíciles las dejo en un repositorio especial para responderlas más adelante.
      Primero cuéntame si pudiste solucionar.

  • @Usuaurio-kj1ym
    @Usuaurio-kj1ym 3 ปีที่แล้ว +2

    Hola gracias, me gustaría que la plantilla fuera un documento de Google doc, para poder usar encabezado con el logo de la institución y texto de diferente tipo y que lo mande como PDF al correo de cada alumno, lo quiero para informar las calificaciones a cada alumno de mi materia

  • @leonardolb85
    @leonardolb85 3 ปีที่แล้ว +1

    Hola Juan!! Muy buenos tus videos.
    Pregunta: todas las semanas le envío un mail a cada vendedor (son 25), con un listado de clientes deudores y sus saldos respectivos. Esta información está en una planilla (podría ser 1 hoja por cada vendedor), con varias filas y columnas las cuales van cambiando de tamaño. Con este video, podría hacer estos envíos? Me pierdo en la parte de la planilla. Espero me puedas ayudar, muchas gracias!

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว +1

      Hola Leonardo!
      En dos semanas sale un vídeo que creo que te podría ayudar a solucionar
      Un gran saludo!

    • @leonardolb85
      @leonardolb85 3 ปีที่แล้ว +1

      @@JuanSGuzman Genial, lo voy a aguardar entonces! Gracias! Entre nosotros, me interesa mucho aprender sobre estos temas (soy fanático del Excel, lo uso para trabajar y me gusta el entorno GSheet). Dónde te parece que pueda hacer algún curso?

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว

      @@leonardolb85 Hola Leonardo
      Mil gracias!
      Te cuento que acabo de lanzar una academia online por suscripciòn de solo Sheets y Apps Script
      Hay 6 cursos actualmente
      Sheets Basico
      Forms Basico
      Inventarios
      Apps Scripts Basico
      Apps Script para Sheets
      Validaciones de Datos
      Cada 15 días llega un nuevo curso. Los próximos son:
      Listas Desplegables
      Query
      Envío de mails
      También ahí encuentras todas las plantillas de los videos de TH-cam
      Y los estudiantes sugieren los proximos cursos o lecciones adicionales de los cursos existentes.
      Tambien, respondo mucho más rápido que por TH-cam
      Aquí te dejo un curso gratis de muestra
      juansguzman.teachable.com/p/descubriendo-el-poder-de-google-sheets-de-0-a-100-en-2-horas/
      Y la academia
      juansguzman.teachable.com/
      Un gran saludo!
      PS. Tambien tengo unos cursos en Udemy, pero la verdad me parece mejor opción esta academia

    • @leonardolb85
      @leonardolb85 3 ปีที่แล้ว +1

      @@JuanSGuzman Cuando subas este video del que hablás, pls avisame ! Gracias !

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว +1

      @@leonardolb85 Hola!
      Es este
      th-cam.com/video/t64C5GfkA70/w-d-xo.html
      Me cuentas

  • @manuelrobles4632
    @manuelrobles4632 3 ปีที่แล้ว

    Eres el puto amo de sheets

  • @monicagonzalez2611
    @monicagonzalez2611 2 ปีที่แล้ว

    Hola Juan muchas gracias como siempre por tan grande aportación, te felicito. Disculpa, tengo un formato de cotización y tomé algunas de las variables dentro del formato para la plantilla, esto es, el correo, el nombre cliente y la razón social. Cuando el correo se envía con el archivo adjunto, el PDF aparte de la hoja de la cotización imprime todas las demás las hojas del libro, esto es, la de la plantilla y la de los clientes y productos, pero me gustaría especificar en el código que sólo imprima la primera pestaña (en este caso, se llama Cotizador) este es el código, agradezco cualquier observación. Saludos.
    function enviarCorreo()
    {
    const nombreBase = 'Cotizador'
    const archivo = SpreadsheetApp.getActiveSpreadsheet()
    const hojaCotizador = archivo.getSheetByName('Cotizador');
    var plantilla = archivo.getSheetByName('PlantillaCorreo').getRange(3,1).getValue();
    var cuota = MailApp.getRemainingDailyQuota();
    Logger.log(cuota);
    if(hojaCotizador.getName()==nombreBase){
    var correo = hojaCotizador.getRange("D8").getValue();
    var razonSocial = hojaCotizador.getRange("D5").getValue();
    var nombreContacto = hojaCotizador.getRange("D9").getValue();
    var mensajeAlerta = "El correo no pudo ser enviado";
    var asunto = "Cotización de la Empresa X";
    var mensaje = plantilla.replace("{{correo}}",correo)
    .replace("{{razonSocial}}",razonSocial)
    .replace("{{nombreContacto}}",nombreContacto)
    if(correo==""){
    SpreadsheetApp.getUi().alert(mensajeAlerta)
    }else{
    const archivo=DriveApp.getFileById("abcdefghijklmnopqrstuvwxyz123");
    const blob=archivo.getAs(MimeType.PDF)
    GmailApp.sendEmail(correo,asunto,mensaje, {
    attachments: [blob]
    });
    }

  • @JesusJimenez-tk3nz
    @JesusJimenez-tk3nz ปีที่แล้ว

    Hola que tal Espero me puedan apoyar mi Duda al llenar la pantilla los datos me salen como muchos digitos despues del punto decimal , ya que es el resultado de un porcentaje. hay alguna forma donde esto pasarlo a un entero ? gracias

    • @JuanSGuzman
      @JuanSGuzman  ปีที่แล้ว

      Haz el formato en tu Sheet y en vez de getValue usa getDisplayValue
      Saludos!

  • @XD5richard
    @XD5richard 4 ปีที่แล้ว +1

    ¿Algo similar de podría hacer con WhatsApp, en vez de un e-mail?

    • @JuanSGuzman
      @JuanSGuzman  4 ปีที่แล้ว +1

      Hola Richard
      La verdad no estoy seguro
      Tengo que revisar la API de whatsapp
      Espero hacer un video de eso mas adelante si se puede (Se debe poder)
      Saludos

  • @paulaandreapayares6428
    @paulaandreapayares6428 2 ปีที่แล้ว +1

    Mago!
    Mil gracias ♥

    • @JuanSGuzman
      @JuanSGuzman  2 ปีที่แล้ว

      Hola!
      Que amables palabras! Mil gracias!
      Saludos!

  • @ing.albertoramirez9773
    @ing.albertoramirez9773 3 ปีที่แล้ว

    Hola Juan!, donde esta la funcion crear mensaje me perdí, de donde sale al variable datos?

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว

      Hola!
      Mil disculpas.
      Esta es parte de una serie más larga (La verdad debí hacerlo mas independiente)
      Aquí te dejo las partes anteriores
      Enviar desde plantilla - th-cam.com/video/rNfHOp8OHeU/w-d-xo.html
      Enviar con un boton - th-cam.com/video/28EMj-Gs9C8/w-d-xo.html
      Enviar con un boton 2 - th-cam.com/video/hp2W51iK2Tk/w-d-xo.html
      Saludos!

  • @RobertoJurado
    @RobertoJurado 3 ปีที่แล้ว +1

    Este video no me quedo claro, me confundió un poco lo que ya tenias hecho y sobre todo que como voy viendo en secuencia sobre el envio de correos desde googlesheets, los 2 dos primero no tuve problema y los corrí y funcionaron bien, pero este ultimo me esta dando problemas porque me sale mensaje de error "fila is not defined"..... si es posible hacer otro video y si vienes de una secuencia, usar los mismos nombre de libros, hojas, variantes, campos, etc. Si das cursos sobre esto por favor indicame como los puedo tomar. Gracias.

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว +1

      Hola Roberto
      Tienes toda la razón
      La verdad es que los videos a veces parecen estar un poco desconectados, y uno se puede llegar a perder
      Te recomiendo pasarte por la academia donde tengo dos cursos del tema.
      Envío de correos - juansguzman.teachable.com/p/envio-de-correos/
      Envío de correos masivos - juansguzman.teachable.com/p/envio-masivo-de-correos-con-google-sheets-google-apps-script-y-gmail/
      Ahí trato de ser mucho más secuencial e ir paso a paso, además que me puedes ir preguntando cualquier cosa de las lecciones
      Un gran saludo!

    • @RobertoJurado
      @RobertoJurado 3 ปีที่แล้ว

      @@JuanSGuzman ya me inscribí. Súper !!!

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว +1

      @@RobertoJurado Excelente!
      Ojalá te sirva y quedo pendiente de todas tus dudas!
      Saludos y mil gracias!

  • @carlosd8689
    @carlosd8689 3 ปีที่แล้ว

    Buenísimo! Gran material 👍

  • @MaLaBacHeLo
    @MaLaBacHeLo 4 ปีที่แล้ว +1

    Cómo puedo programar un botón por hoja del libro de Google sheets?, o bien configurar con un botón para que envíe correos personalizados para todos los contactos separados en distintas hojas?

  • @faqcardo6782
    @faqcardo6782 3 ปีที่แล้ว

    hola Juan S Gusman me esta dando un error en esta linea y no logro entender el porque del error "contactos.forEach(funtion(fila){" agradeceria tu respuesta. Muchas graias

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว

      Hola!
      Cambia funtion por function
      Saludos!

  • @mairaalejandralugo5354
    @mairaalejandralugo5354 4 ปีที่แล้ว

    Hola de nuevo juan. Muy bueno el vídeo como siempre, pero, me aparece este mensaje:
    TypeError: contactos.forEach is not a function (línea 107, archivo "Código").
    Con respecto a la cuota diaria es posible que aparte de recibir un mensaje de notificación se pueda reactivar el envío al resto de email cuando haya cuota disponible y también si es posible hacer una función con un botón para detener el envío de correos, incluso con un enlace en la notificación por correo electrónico.
    Gracias

    • @JuanSGuzman
      @JuanSGuzman  4 ปีที่แล้ว

      Hola!
      Déjame ver todo el código para que encontremos el error.
      En cuanto a lo otro, yo creo que podemos hacer un check para saber cuáles envió hoy y de pronto poner un activador todos los días en la mañana por ejemplo, para que revise cuáles no se han enviado y los envíe automáticamente
      Lo de detener no estoy tan seguro. De pronto podemos es poner un mensaje de confirmación antes de enviarlos
      Saludos!

    • @robertomaldonado7438
      @robertomaldonado7438 3 ปีที่แล้ว +1

      @@JuanSGuzman hola juan , me sale el mismo error que el compañero contactos.forEach is not a function
      te ddejo el codigo completo , desde ya muchas gracias !
      }
      function enviarMailActual(){
      //variables de configuracion
      const nombrebase = "BD"
      const filaencabezado = 1
      const colcorreo = 1;
      const colnombre = 2;
      const coltelefono = 3;
      const colproducto = 4;
      const colfecha = 5;
      const colconfirmacion = 6;
      const colfechaenvio = 7;
      const mensajealerta = "No existe correo valido";
      const mensajeexito = "Correo enviado Exitosamente";
      const archivo = SpreadsheetApp.getActiveSpreadsheet();
      var hoja = archivo.getActiveSheet();
      var plantilla = archivo.getSheetByName("plantilla").getRange('A1').getValue();
      var config = archivo.getSheetByName("configuracion");
      var asunto = config.getRange('B2').getValue();
      var nombrecorreo = config.getRange('B1').getValue();


      if(hoja.getName()==nombrebase){
      var activa = hoja.getActiveCell();
      var filaActiva = activa.getRow();
      if(filaActiva>filaencabezado){
      var correo = hoja.getRange(filaActiva,colcorreo).getValue();
      var nombre = hoja.getRange(filaActiva,colnombre).getValue();
      var telefono = hoja.getRange(filaActiva,coltelefono).getValue();
      var producto = hoja.getRange(filaActiva,colproducto).getValue();
      var fecha = hoja.getRange(filaActiva,colfecha).getValue();
      var mensaje = plantilla
      .replace("{nombre}",nombre)
      .replace("{producto}" ,producto)
      .replace("{fecha}" ,fecha)
      .replace("{telefono}" ,telefono)

      if(correo==""){
      SpreadsheetApp.getUi().alert(mensajealerta)
      }else{
      GmailApp.sendEmail(correo, asunto ,mensaje, {name:nombrecorreo});
      hoja.getRange(filaActiva,colconfirmacion).setValue('OK');
      hoja.getRange(filaActiva,colfechaenvio).setValue(new Date());
      SpreadsheetApp.getUi().alert(mensajeexito);
      }
      }else{
      SpreadsheetApp.getUi().alert("debe estar situado en uno de los contactos")

      //cierre if filaencabezado
      }}else{
      SpreadsheetApp.getUi().alert("debe estar en la pestaña "+ nombrebase +" para enviar mail")
      }
      }// cierre if pestaña activa
      //funcion para multi correos
      function mailmerge(){
      const nombredatos = "BD"
      const nombreconfig = "configuracion"

      var archivo = SpreadsheetApp.getActiveSpreadsheet();
      var hoja = archivo.getSheetByName(nombredatos);
      var config = archivo.getSheetByName(nombreconfig);
      var contactos = hoja.getRange(2, 1, 5, 7).getValue();
      var asunto = config.getRange('B2').getValue();

      contactos.forEach(function(fila){
      Logger.log(fila[0]);
      var mensaje = crearmensaje(fila);
      GmailApp.sendEmail(fila[0], asunto, mensaje);

      })
      }
      function crearmensaje(datos){
      var plantilla = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("plantilla").getRange('A1').getValue();
      var mensaje = plantilla
      .replace("{nombre}",datos[1])
      .replace("{producto}",datos[2])
      .replace("{fecha}",datos[3])
      .replace("{telefono}",datos[4])
      return mensaje


      }

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว +1

      @@robertomaldonado7438 Hola Roberto
      Pone una "s" al final de esta linea (antes del parentesis y punto y coma)
      var contactos = hoja.getRange(2, 1, 5, 7).getValue();
      Saludos!

    • @robertomaldonado7438
      @robertomaldonado7438 3 ปีที่แล้ว +1

      @@JuanSGuzman te pasaste , eres el mejor! .
      la ultima duda , al momento de enviar el asunto el cual lo tengo con la fecha
      me sale de esta menera la entrega no se pudo realizar el dia Tue Jul 06 2021 00:00:00 GMT-0400 (Chile Standard Time)
      es posible solo dejarlo con jul 06 2021?

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว +1

      @@robertomaldonado7438 Hola Roberto
      Intenta cortar la fecha con el método .toLocaleDateString()
      Me cuentas
      Saludos!

  • @gerardopena788
    @gerardopena788 3 ปีที่แล้ว +1

    Muchas gracias por tu aporte para los que deseamos aprender este tema.
    Me sale error al correr el onOpen:
    ____________________________________________
    Error
    ReferenceError: Spreadsheet is not defined
    ____________________________________________
    Me pudieras apoyar diciéndome como corregir este error.
    De nueva cuenta, muchas gracias por el apoyo.

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว

      Hola Gerardo
      Déjame ver como tienes el código
      Saludos!

    • @gerardopena788
      @gerardopena788 3 ปีที่แล้ว +1

      @@JuanSGuzman Hola, de antemano gracias por tu apoyo.
      Me marca el mismo error en tres partes del código, las cuales te hago llegar:
      config.getRange("B3").setValue(cuota);
      Logger.log(cuota);
      contactos.forEach(function(fila){
      var mensaje = crearMensajeHtml(fila);
      enviarMail(fila[0],asunto,mensaje,nombreCorreo)
      })
      }
      El error es:
      Registro de ejecución
      11:30:34 Aviso Se ha iniciado la ejecución
      11:30:01 Información 33.0
      11:30:36 Error
      ReferenceError: crearMensajeHtml is not defined
      (anónimo) @ Correo Actual.gs:98
      mailMerge @ Correo Actual.gs:97
      El segundo error es:
      function onOpen() {
      crearMenu();
      }
      function crearMenu(){
      const miMenu = Spreadsheet.App.getUi().createMenu("Acciones");
      miMenu
      .additem("Enviar Mail a contacto actual","enviarMailActual")
      .additem("Enviar correos masivos","mailMerge").addToUi()
      .addToUi()
      }
      onOpen:
      Registro de ejecución
      11:33:35 Aviso Se ha iniciado la ejecución
      11:33:35 Error
      ReferenceError: Spreadsheet is not defined
      crearMenu @ Correo Actual.gs:7
      onOpen @ Correo Actual.gs:3
      crearMenu:
      Registro de ejecución
      11:33:56 Aviso Se ha iniciado la ejecución
      11:33:56 Error
      ReferenceError: Spreadsheet is not defined
      crearMenu @ Correo Actual.gs:7

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว

      @@gerardopena788 Hola
      Mil gracias por compartir
      Error 1. No es Spreadsheet.App sino SpreadsheetApp
      Error 2. Copiaste la función crearMensajeHtml?
      Un gran saludo!

  • @oxpey4473
    @oxpey4473 2 ปีที่แล้ว

    Hola juan cuando intento enviar un mail. Dice que alcancé el maximo de destinatarios (al parecer 50) se puede aumentar este limite?

    • @oxpey4473
      @oxpey4473 2 ปีที่แล้ว +1

      Es decir necesito enviar un solo y mismo correo a 150 destinatarios en un solo correo

    • @JuanSGuzman
      @JuanSGuzman  2 ปีที่แล้ว

      Hola!
      El limite es de 100 destinatarios para cuentas gratis. Te puedes pasar a una cuenta workspace y te aumenta a 1500.
      developers.google.com/apps-script/guides/services/quotas
      Saludos!

    • @oxpey4473
      @oxpey4473 2 ปีที่แล้ว

      @@JuanSGuzman pues no, no me deja. mi codigo en mi GAS es algo talque así:
      var correos = [(aqui dentro tengo 57 correos]
      y cuando trato de enviar con "GmailApp.sendEmail(correos , asunto, mensaje, { name: plantillaNombre });"
      Dice que me excedo en la cantidad maxima de destinatarios.
      Si le quito unos 7, si me deja... es decir que el máximo es 50.
      No tengo idea que puede ser. Y como tengo todos los correos en una celda separados por coma, no se me ocurre como partirlo en 2

    • @oxpey4473
      @oxpey4473 2 ปีที่แล้ว +1

      será por esto que dice el link que me pasaste?
      Apps Script projects 50 / day
      Email recipients per message 50 / msg

    • @JuanSGuzman
      @JuanSGuzman  2 ปีที่แล้ว

      @@oxpey4473 Exacto. o te deja enviar mas de 50 en uno solo Más fácil hacerlo con un codigo masivo que lo mande uno por uno y ahi si puedes enviar los 100 en gratis y los 1500 en pago
      Saludos!

  • @MarcoMundarain
    @MarcoMundarain 3 ปีที่แล้ว +1

    Wow, esto está increíble
    ¿Dónde puedo ver el código completo? No lo encuentro en la juansguzman.com/

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว

      Hola Marco
      No lo he subido aun al blog
      Aquí te lo dejo
      docs.google.com/spreadsheets/d/1TiZYn4vGPIWm2vPDjq4gwcRs8G_I1QTFsWyg6LnA8lk/copy
      Saludos!

  • @JosemanuelMenco-uu8rh
    @JosemanuelMenco-uu8rh ปีที่แล้ว +1

    Agregar flechas para enviar los
    Correos

    • @JuanSGuzman
      @JuanSGuzman  ปีที่แล้ว

      Hola!
      A que te refieres exactamente
      Saludos!

  • @AngieRamirez-qr9ig
    @AngieRamirez-qr9ig 5 หลายเดือนก่อน +1

    En la ultima actualización se ve todo muy diferente y no es tan practico, quiero decir que no hay tantas opciones de funciones o de comandos de apps scrip, me ha dado muchos problemas para ejecutar el codigo

    • @AngieRamirez-qr9ig
      @AngieRamirez-qr9ig 5 หลายเดือนก่อน +1

      Podrias hacer un tutorial mas acualizado?

    • @JuanSGuzman
      @JuanSGuzman  5 หลายเดือนก่อน

      Claro que sí, ya lo anoto
      Por ahora, puedes ver este video donde lo hago rapidamente en Sheets 2024
      th-cam.com/video/ya7T9Q_3f9w/w-d-xo.html
      Saludos!

  • @nadiariveravelazquez9850
    @nadiariveravelazquez9850 3 ปีที่แล้ว

    Hola Juan!, me han sido de gran ayuda tus videos, hice algo similar a lo que tu muestras, pero tengo una duda. en tu ejemplo solo designas una columna para los correos, en mi caso tengo dos columnas designadas para los correos destinatarios.
    El problema es que solo se envía a un correo, cuando debería mandarse a ambos. Te paso el fragmento del código, me podrías ayudar a saber que estoy haciendo mal, por favor? :'v
    Aquí se manda el correo:
    var message = template.evaluate().getContent();
    MailApp.sendEmail({
    to: empleado.email,
    subject: empleado.celebraciones[cel].asunto,
    htmlBody: message,
    });
    Y aquí "declaro" que celdas se van a leer:
    var empleado =
    {
    email: rec[0],
    correo: rec[1],
    Nombre: rec[2],
    insignia: rec[4],
    celebraciones: celebraciones
    };
    correo, es la 2da columna del 2do correo. :c

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว +1

      Hola!
      Cuando vas a enviar a varios mails, te toca hacer una cadena separada por comas
      entonces seria
      to:empleado.email+","+empleado.correo
      Me cuentas si te funciona
      Saludos!

  • @rodrigozabala6149
    @rodrigozabala6149 3 ปีที่แล้ว

    hola Juan una consulta no me funciona en el var de mensaje las opciones .replace me da error que puede ser?

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว

      Hola!
      Normalmente es que la variable a la que le estas haciendo replace no es un texto
      Saludos!

    • @rodrigozabala6149
      @rodrigozabala6149 3 ปีที่แล้ว +1

      @@JuanSGuzman es una formula de donde lo toma ahi forma que remplace por ese dato o no

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว

      @@rodrigozabala6149 Siempre lo puedes convertir a texto con toString()
      Un gran saludo!

  • @danielasandoval9
    @danielasandoval9 4 ปีที่แล้ว

    Hola Juan! Muchas gracias por tus videos, los estoy aplicando a la par que los vas subiendo.
    Tengo una duda, si quisiera enviar el mismo mensaje a dos correos, cómo podría adicional el segundo?
    Por ejemplo: En la fila dos que está ubicado el cliente Sebastián, quiero enviar ese mismo correo con la misma plantilla y los mismos datos de Sebastián pero no solo al correo Guzman.sheets@gmail.com sino a otro adicional. No necesito que sea una copia oculta, simplemente que el mismo cuerpo del correo tenga dos destinatarios, en ese caso cómo podría realizarlo?
    Muchas gracias :)

    • @JuanSGuzman
      @JuanSGuzman  4 ปีที่แล้ว

      Hola Daniela
      Es muy fácil!
      Simplemente en la variable "destinatario" inserta dentro de las comillas los correos que quieras, separados por comas
      Si los tienes en distintas celdas puedes concatenarlo en una sola variable.
      Por ejemplo, si lo tuvieras asi:
      en la celda A2 el primer mail
      en la celda A3 el segundo mail
      en la celda A4 el tercer mail
      el comando seria GmailApp.sendEmail(fila[0]+","+fila[1]+","+fila[2],asunto, mensaje)
      Si por otro lado, el correo 2 y 3 van a ser los mismos, entonces se los agregas
      GmailApp.sendEmail(fila[0]+",pedro@hotmail.com,info@paraguas.com"],asunto, mensaje)
      Mas facil aun, insertalos en tu columna A separados por coma, y te los deberia enviar a todos
      Me cuentas si te funciona
      Saludos!

    • @danielasandoval9
      @danielasandoval9 4 ปีที่แล้ว +1

      Juan S Guzman Sí me funcionó con las comas, Juan. Muchísimas gracias!

    • @JuanSGuzman
      @JuanSGuzman  4 ปีที่แล้ว

      @@danielasandoval9 Excelente! Me alegro!

  • @cindymolina4366
    @cindymolina4366 3 ปีที่แล้ว +1

    No he podido, :( me aparece un error con el getRange

    • @JuanSGuzman
      @JuanSGuzman  3 ปีที่แล้ว

      Hola Andrea
      Que error te sale
      Un gran saludo!

  • @sinailopez7696
    @sinailopez7696 ปีที่แล้ว +1

    No logro entender en qué momento se dio declaró "datos" 🥲

    • @JuanSGuzman
      @JuanSGuzman  ปีที่แล้ว

      Hola!
      En este caso "datos es un argumento de la función crearMensaje por lo que no hay que declararla
      Simplemente cuando llames a esa función tienes que darle un objeto
      En nuestro caso la llamaamos en la linea 104 asi crearMEnsaje(fila[0])
      Tienes razón ue el tema de llamar funciones es un poco mas avanzado y no debí meterlo en este video. Me queda de enseñanza
      Saludos