Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

267
Vistas
Agregar una imagen de una hoja de cálculo a un correo electrónico con Apps Script

Estoy creando un correo electrónico automático que incluye muchos datos que cambian cada semana. Soy nuevo en Apps Script y me gustaría agregar una imagen al final del correo electrónico.

Aquí el código:

 // Drive where is stored the image const folder = DriveApp.getFolderById("1XXXXXXXXX"); // Retrieve ID file where is stored the image const file = folder.getFilesByName("file") const fileIDs = []; while (file.hasNext()) { var files = file.next(); fileIDs.push(files.getId()); } var ssFile = SpreadsheetApp.openById(fileIDs[0]); SpreadsheetApp.setActiveSpreadsheet(ssFile); //Spreadsheet var mail = ssFile.getSheetByName("Mail"); //Retrieve image from the spreadsheet var retrieveImage = mail.getImages()[0]; var arrayImage = new Array(); var image = {}; arrayImage[0] = retrieveImage.getAs('image/png') image["image"+0] = arrayImage[0]; //Fonction to send mail function sendEmailS(){ var message = "Test"; message += "<img src='cid:image" +0+ "'> <br>"; GmailApp.sendEmail("email@email.com", "subject", "", { htmlBody: message, inlineImages: image } ); }

Tengo el error de que getAs no es una función . ¿Podría ayudarme o darme alguna pista para terminar mi guión?

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Problema y solución alternativa:

De su secuencia de comandos que muestra y el error de I've got the error that getAs is not a function. , pensé que el motivo de su problema se debe a que la imagen no se puede recuperar como un blob de la hoja de cálculo.

En la etapa actual, lamentablemente, no existe ningún método para recuperar directamente la imagen en la hoja de cálculo como un blob. Entonces, en esta respuesta, me gustaría proponer una solución alternativa. En esta solución, se usa una biblioteca de Google Apps Script . Esta biblioteca es compatible con los procesos que los servicios actuales de Google no pueden lograr directamente.

Uso:

1. Instale la biblioteca de Google Apps Script.

Instale DocsServiceApp de la biblioteca de Google Apps Script. Puedes ver cómo instalarlo aquí .

2. Guión modificado.

Cuando su secuencia de comandos se modifica utilizando esta biblioteca, se convierte en la siguiente.

 function sendEmailS() { // Drive where is stored the image const folder = DriveApp.getFolderById("1XXXXXXXXX"); // Retrieve ID file where is stored the image const file = folder.getFilesByName("file") const fileIDs = []; while (file.hasNext()) { var files = file.next(); fileIDs.push(files.getId()); } var ssFile = SpreadsheetApp.openById(fileIDs[0]); SpreadsheetApp.setActiveSpreadsheet(ssFile); //Spreadsheet var mail = ssFile.getSheetByName("Mail"); //Retrieve image from the spreadsheet var retrieveImage = mail.getImages()[0]; var arrayImage = new Array(); var image = {}; const anchor = retrieveImage.getAnchorCell().getA1Notation(); const res = DocsServiceApp.openBySpreadsheetId(fileIDs[0]).getSheetByName("Mail").getImages(); const obj = res.find(({ range: { a1Notation } }) => a1Notation == anchor); if (!obj) return; arrayImage[0] = obj.image.blob; image["image" + 0] = arrayImage[0]; //Fonction to send mail var message = "Test"; message += "<img src='cid:image" + 0 + "'> <br>"; GmailApp.sendEmail("email@email.com", "subject", "", { htmlBody: message, inlineImages: image } ); }

3. Pruebas.

Cuando se ejecuta este script, se recupera una imagen de mail.getImages()[0] como un blob. Y se envía un correo electrónico utilizando el blob de imagen recuperado.

Referencia:

  • Biblioteca DocsServiceApp de Google Apps Script
about 4 years ago · Santiago Trujillo Denunciar

0

¿Quizás algunas ideas aquí para usted?.... ...esto obtiene un archivo de imagen de G.drive y lo envía por correo electrónico...

 function emailImage(){ fileList = DriveApp.getFilesByName('imageNameInDrive.jpg'); while (fileList.hasNext()) { image = fileList.next().getId(); } var insertImage = DriveApp.getFileById(image).getBlob(); var message = 'Test<br>'; message += '<img src="cid:insertImage" > <br>'; GmailApp.sendEmail("email@gmail.com", "subject", "", { htmlBody: message, inlineImages: { insertImage: insertImage } } ); }
about 4 years ago · Santiago Trujillo Denunciar

0

Además de la respuesta de Tanaike , que en mi opinión sería una buena solución, hay una solicitud de función abierta para convertir imágenes de hojas de cálculo a BlobSource.

Recuerda darle al botón +1 para decirle a Google que tú también estás interesado.

  • Actualice OverGridImage para admitir la interfaz BlobSource
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda