Настройка системы электронной почты из моей таблицы Google. У меня все остальное работает кроме добавления изображения в тело - PullRequest
0 голосов
/ 22 февраля 2020

Я пытаюсь добавить изображение в тело письма. Я смог заставить все остальное работать нормально, кроме части изображения. Изображения, которые я пытаюсь использовать, находятся в столбце «М».

Что мне нужно добавить, чтобы получить значение из столбца «М» и поместить его в тело письма? -код предоставляется ниже

Заранее спасибо. Все, что я пробовал, потерпело неудачу, поэтому я просто удалил все, что пытался, и пошел к тому, что у меня было изначально, прежде чем решил добавить изображения в электронные письма.

function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;
  var numRows = 15;
  var dataRange = sheet.getRange(startRow, 1, numRows, 15);
  var data = dataRange.getValues();
  for (var i in data) {
    var row = data[i];
    var emailAddress = row[4];
    var message = row[10];
    var subject = "Subject Test";
    MailApp.sendEmail(emailAddress, subject, message);
  }
}




[error message][1]


  [1]: https://i.stack.imgur.com/nwAJG.png

1 Ответ

0 голосов
/ 24 февраля 2020

Если вы хотите отправить электронное письмо, содержащее images, вы можете использовать один из следующих вариантов:

  • Если ваши изображения хранятся как urls в вашей электронной таблице

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

  var imageUrl = sheet.getRange("YOUR_RANGE_FOR_THE_IMAGE").getValue(); 
  var imageBody = "<img src='cid:myImage'>";
  var imageBlob = UrlFetchApp.fetch(imageUrl)
                           .getBlob()
                           .setName("imageBlob");
  var message = row[10];
  var subject = "Subject Test";
  MailApp.sendEmail({
    to: emailAddress, 
    subject: subject, 
    htmlBody: message +"<br/><br/>"+ imageBody,
    inlineImages:{
      myImage: imageBlob
      }
  });

В приведенном выше фрагменте кода используется InlineImages, чтобы прикрепить изображение в виде вложения в электронное письмо, которое вы хотите отправить.

  • Если ваши изображения хранятся на диске и у вас есть файл ids

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

  var imageId = sheet.getRange("YOUR_RANGE_FOR_THE_IMAGE").getValue(); 
  var image = DriveApp.getFileById(imageId);
  var imageBlob = Utilities.newBlob('', 'image/jpeg');

  var message = row[10];
  var subject = "Subject Test";
  MailApp.sendEmail({
    to: emailAddress, 
    subject: subject, 
    body: message,
    attachments: [image.getAs(MimeType.JPEG), imageBlob]
  });
  • Если ваши изображения хранятся inside a cell и / или как overgrid images

К сожалению, Google Sheets не имеет возможности возвращать большой размер изображения, только ссылку на изображение, которое означает, что вы не можете получить им и прикрепите их позже по электронной почте с помощью Google Apps Script.

В этом случае альтернативой может быть использование функции =IMAGE() для вставки изображений в ячейку и после этого вы можете получить их, используя Sheets API V4 .

Ссылка

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