GmailApp - встроенные изображения прикреплены, а не встроенные - отправьте электронное письмо с изображениями в теле - PullRequest
0 голосов
/ 05 июля 2018

Я создал Google Script для отправки нескольких графиков в виде изображений. При использовании MailApp это работает, а изображения находятся в теле письма. При использовании GmailApp изображения представляют собой вложения, а не в теле письма. Я хочу использовать GmailApp, потому что я могу использовать псевдоним, и потому что я выяснил, как заставить электронное письмо отправлять списку людей. Как внести изменения, чтобы функция GmailApp отправляла электронное письмо с диаграммами, содержащимися в теле? Вот ссылка на образец электронной таблицы , а вот код :

function SRpt2() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sstotalsheets = ss.getNumSheets();
  var clientCode =  ss.getSheetByName("Info").getRange("C4").getDisplayValue();
  var progmgr = ss.getSheetByName("Info").getRange("D11").getDisplayValue();
  var sheetcount = 0;
  var token = ScriptApp.getOAuthToken();
  var sheets = ss.getSheets(); 
  var blobs = [];
  var subject = "Daily " + clientCode +" Digest"; 
  var body = "Your daily update";
  var recips = progmgr + ", neill@momentum-behavioral.com";
  var emailImages={};
  var emailBody="Charts<br>";

  for (var i = 5; i < sheets.length ; i++ ) {
    var sheet = sheets[i];
    var charts = sheet.getCharts(); 

    if(charts.length > 0) {
      var template = HtmlService.createTemplateFromFile("reportTemplate");
      template.date = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "MM-dd-yyyy");
      blobs[i] = charts[0].getBlob().getAs('image/png').setName("areaBlob");
      emailBody= emailBody + "<img src='cid:chart"+i+"'><br>";
      emailImages["chart"+i]= blobs[i];
    }
  }

  var me = Session.getActiveUser().getEmail();
  var aliases = GmailApp.getAliases();
  if (aliases.length > 0) {
    GmailApp.sendEmail(recips, subject, emailBody, {'from': aliases[0],inlineImages:emailImages});
  }

  MailApp.sendEmail({
    to: recips,
    subject: subject,
    htmlBody: emailBody,
    inlineImages:emailImages});
}

А вот HTML-код, на который он ссылается:

<html>
  <h1>Daily Update <?= date ?></h1>
  <p>
    <img src="cid:chart" />
  </p>
</html>

В неправильно отформатированном теле письма просто указан фактический исходный HTML-код (я не могу понять, как вставить его в стековый поток без фактического обращения с ним как с HTML).

1 Ответ

0 голосов
/ 05 июля 2018

Добавьте HTML к объекту параметров. И сделайте параметр body и пустую строку.

var options;

options = {};//Assign an empty object to the variable options

//{'from': aliases[0],inlineImages:emailImages}
options.from = aliases[0];
options.inlineImages = emailImages;
options.htmlBody = emailBody;

if (aliases.length > 0) {
  GmailApp.sendEmail(recips, subject, "", options);//Leave body an empty string
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...