emailgoogle-apps-scriptinline-images

Unable to add inline image to email in google apps script


I'm new to Google Apps script and am trying to add an image inline to an automated response email. The auto reply works perfectly, the main text of the email formats well in plain text and html. the problem i'm facing is that the image does not appear.

my code:

// This constant is written in column Y for rows for which an email
// has been sent successfully.
var EMAIL_SENT = 'EMAIL_SENT';

/**
 * Sends non-duplicate emails with data from the current spreadsheet.
 */
function sendEmails2() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  SpreadsheetApp.setActiveSheet(sheet.getSheetByName('Data'))
  var startRow = 2; // First row of data to process


  // Fetch the range
  var dataRange = sheet.getRange("L2:L1000")
  var dataRange2 = sheet.getRange("K2:K1000")
  var dataRange3 = sheet.getRange("O2:O1000")
  var dataRange4 = sheet.getRange("Y2:Y1000")
  var dataRange5 = sheet.getRange("B2:B1000")
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  var data2 = dataRange2.getValues();
  var data3 = dataRange3.getValues();
  var data4 = dataRange4.getValues(); 
  var data5 = dataRange5.getValues();

    for (var i = 0; i < data.length; ++i) {
        var yesno = data2[i]
        if(yesno == "Yes"){
        var TFlogoUrl = "https://drive.google.com/openid=1nzmvP_zzOms1HiBoFCsVLFjDM6ZzM287";
        var TFlogoBlob = UrlFetchApp
                            .fetch(TFlogoUrl)
                            .getBlob()
                            .setName("TFlogoBlob");
        var emailAddress = data[i];
        var ShipID = data3[i];
        var cmdrID = data5[i];
        var TFmsg = "Hi " + cmdrID + ",/n /nThank you for signing up to The  Fatherhoods Lost Souls Expedition./n /nYour unique Ship ID is: " + ShipID + "/n /nWe look forward to seeing you on the expedition CMDR!/n /nFly Safe,/nThe Lost Souls Expedition team.";
        var htmlTFmsg = "Hi " + cmdrID + ",<br> <br>Thank you for signing up to The Fatherhoods Lost Souls Expedition.<br> <br>Your unique Ship ID is: " + ShipID + "<br> <br>We look forward to seeing you on the expedition CMDR!<br> <br>Fly Safe,<br>The Lost Souls Expedition team.<br><img src='cid:TFlogo'>";             
        emailSent = data4[i]; // email sent (column Y)
        if (emailSent != EMAIL_SENT) { // Prevents sending duplicates
         var subject = "Lost Souls Expedition Sign up confirmation";
         MailApp.sendEmail(emailAddress,subject,TFmsg,{
           htmlBody: htmlTFmsg,
           inlineImage: 
           { 
             TFlogo:TFlogoBlob
           }
         });
         sheet.getRange("Y" + (startRow + i)).setValue(EMAIL_SENT);
         // Make sure the cell is updated right away in case the script is interrupted
         SpreadsheetApp.flush();
       }
     }
   }
}

Solution

  • How about this modification?

    Modification points:

    The script which reflected above points is as follows.

    Modified script:

    Please modify your script as follows.

    From:
    var TFlogoUrl = "https://drive.google.com/openid=1nzmvP_zzOms1HiBoFCsVLFjDM6ZzM287";
    var TFlogoBlob = UrlFetchApp.fetch(TFlogoUrl).getBlob().setName("TFlogoBlob");
    
    To:
    var id = "1nzmvP_zzOms1HiBoFCsVLFjDM6ZzM287";
    var TFlogoBlob = DriveApp.getFileById(id).getBlob().setName("TFlogoBlob");
    

    And

    From:
    inlineImage: {TFlogo:TFlogoBlob}
    
    To:
    inlineImages: {TFlogo:TFlogoBlob}
    

    References:

    If I misunderstand your question, please tell me. I would like to modify it.