Невозможно добавить встроенное изображение в электронную почту в скрипте приложений Google - PullRequest
0 голосов
/ 13 сентября 2018

Я новичок в скрипте Служб Google и пытаюсь добавить встроенное изображение в письмо с автоматическим ответом.Автоматический ответ работает отлично, основной текст электронной почты хорошо форматируется в виде обычного текста и HTML.проблема, с которой я сталкиваюсь, состоит в том, что изображение не появляется.

мой код:

// 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();
       }
     }
   }
}

1 Ответ

0 голосов
/ 14 сентября 2018

Как насчет этой модификации?

Очки модификации:

  • Вы не можете получить файл blob с этого URL var TFlogoUrl = "https://drive.google.com/openid=1nzmvP_zzOms1HiBoFCsVLFjDM6ZzM287";. Если вы хотите получить файл BLOB-объекта из URL-адреса, используйте var TFlogoUrl = "http://drive.google.com/uc?export=view&id=1nzmvP_zzOms1HiBoFCsVLFjDM6ZzM287";. 1nzmvP_zzOms1HiBoFCsVLFjDM6ZzM287 - идентификатор файла.
    • В качестве другого метода из идентификатора файла обнаружено, что значения getSharingAccess() и getSharingPermission() равны ANYONE_WITH_LINK и VIEW соответственно. Таким образом, вы также можете получить BLOB-объект, используя var TFlogoBlob = DriveApp.getFileById("1nzmvP_zzOms1HiBoFCsVLFjDM6ZzM287").getBlob().setName("TFlogoBlob");. Я рекомендую это.
  • Если вы хотите использовать встроенное изображение для отправки по электронной почте, измените его с inlineImage на inlineImages.

Сценарий, отражающий вышеприведенные пункты, выглядит следующим образом.

Модифицированный скрипт:

Пожалуйста, измените ваш скрипт следующим образом.

От:
var TFlogoUrl = "https://drive.google.com/openid=1nzmvP_zzOms1HiBoFCsVLFjDM6ZzM287";
var TFlogoBlob = UrlFetchApp.fetch(TFlogoUrl).getBlob().setName("TFlogoBlob");
Для того, чтобы:
var id = "1nzmvP_zzOms1HiBoFCsVLFjDM6ZzM287";
var TFlogoBlob = DriveApp.getFileById(id).getBlob().setName("TFlogoBlob");

И

От:
inlineImage: {TFlogo:TFlogoBlob}
Для того, чтобы:
inlineImages: {TFlogo:TFlogoBlob}

Ссылки

Если я неправильно понял ваш вопрос, пожалуйста, скажите мне. Я хотел бы изменить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...