Estoy escribiendo un script automatizado para enviar correos desde mis hojas de Google y quiero adjuntar varias imágenes. Con solo una imagen todo funciona perfectamente bien pero cuando quiero adjuntar dos o más, me da este mensaje de error:
Excepción: error inesperado al obtener el método o la propiedad getFileById en el objeto DriveApp.
Este es mi código ahora mismo:
function sendEmails() { var sheet = SpreadsheetApp.getActiveSheet(); var startRow = 1; // First row of data to process var numRows = 3; // Number of rows to process // Fetch the range of cells A2:B3 var dataRange = sheet.getRange(startRow, 1, numRows, 5); // Fetch values for each row in the Range. var data = dataRange.getValues(); for (var i in data) { var row = data[i]; var emailAddress = row[0]; // First column var message = row[1]; // Second column var image = DriveApp.getFileById(row[2]).getBlob(); var image2 = DriveApp.getFileById(row[3]).getBlob(); var subject = 'TAYDO 2021 Certificate'; } MailApp.sendEmail({ to:emailAddress, subject:subject, body:message, attachments: [image.next(),image2] }); }El script de la aplicación tiene todos los permisos necesarios para ejecutar este script, y las hojas, la unidad y todo está bajo la misma cuenta de Google. ¿Alguien puede ayudar? ¡Gracias por adelantado!
Esto funciona para mí:
function attachimages() { let fldr = DriveApp.getFolderById(gobj.globals.imagesfolderid); let files = fldr.getFiles(); let imgA = []; while(files.hasNext()) { let file = files.next(); if(file.getName().slice(0,3) == 'die') { imgA.push(file.getBlob().getAs('image/jpeg')) } } MailApp.sendEmail({to:'jimesteban@jimesteban.com',subject:'Test Images Attachment',body: 'See Attached Images', attachments:imgA}); }Mis imágenes se llamaron die1.jpg, die2.jpg... y así sucesivamente, son imágenes de las caras de un dado.
Esto también funcionó para mí:
function sendEmails() { const ss = SpreadsheetApp.getActive(); const sh = ss.getSheetByName('Sheet0'); const rg = sh.getRange(2, 1, 3, 4); const vs = rg.getValues(); vs.forEach((r, i) => { let emailAddress = r[0]; let message = r[1]; let image1 = DriveApp.getFileById(r[2].toString()).getBlob(); let image2 = DriveApp.getFileById(r[3].toString()).getBlob(); let subject = 'Test Attach Images'; MailApp.sendEmail({ to: emailAddress, subject: subject, body: message, attachments: [image1, image2] }); }); }Hoja0:
| Correo electrónico | Mensaje | Imagen1 | Imagen2 |
|---|---|---|---|
| Redactado | Mensaje1 | Redactado | Redactado |
| Redactado | Mensaje2 | Redactado | Redactado |
| Redactado | Mensaje3 | Redactado | Redactado |