Отправить письмо - сохранить форматирование ячеек - PullRequest
1 голос
/ 07 марта 2019

У меня есть электронная таблица Google, которая отправляет информацию об ученике, содержащуюся в столбце, который запрашивается и объединяется с другого листа. Запрашиваемая информация отделяется возвратом каретки. Затем этот столбец отправляется по электронной почте семьям, запускаемым по формуле, которая вычисляет, сколько возвратов каретки должно быть в ячейке.

Об этой части я позаботился в самом листе. Мне нужна помощь по электронной почте столбца и поддержания формата ячейки. Я смог сделать это с помощью приведенного ниже кода, но он отправляет ВСЕ данные в столбце D в каждом письме. Мне нужно только отправить то, что находится в соответствующей строке для электронной почты.

Основная часть кода, которая доставляет мне неприятности, я думаю, заключается в следующем:

var OriginalString = SpreadsheetApp.getActive().getRange("D2:D").getValues();
var NewString = OriginalString.toString().replace(/\n/g, '<br>');

Любая помощь будет оценена!

function SendEmail3() {
    var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet3');
    var startrow = 2;
    var lastRow = ss.getLastRow();
    var lastCol = 10;
    var range = ss.getRange(2, 1, lastRow, lastCol);
    var data = range.getValues();
    for (var i = 0; i < data.length; i++) {
        var row = data[i];
        var AccountName = row[0];
        var email = row[1];
        var Parent = row[2];
        var Consent = row[4];
        var StudentData = row[3];
        var CarriageReturns = row[6];
        var Trigger = row[7];
        var emailSent = row[8];
        var subject = "Your Application";
      var OriginalString = SpreadsheetApp.getActive().getRange("D2:D").getValues();
        var NewString = OriginalString.toString().replace(/\n/g, '<br>');

        var message = "<HTML><BODY><font size=4>" +
            "<P>" + "Hello " + Parent + ','
            +"<BR>
            +"<BR>" + NewString + "<BR>"
                        +"</HTML></BODY>";
        var recipientsTo = email;
        if (AccountName.length > 0 && Trigger >= CarriageReturns && emailSent != 'EMAIL_SENT') {
            MailApp.sendEmail({
                subject: subject,
                to: recipientsTo,
                htmlBody: message
            });
            ss.getRange(startrow + i, 9).setValue('EMAIL_SENT');
        }
    }
}

1 Ответ

1 голос
/ 07 марта 2019

Это то, что вы ищете?

Я настроил его так, чтобы вы могли видеть сообщение в немодальном диалоговом окне, а не отправлять электронные письма.

function SendEmail3() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet3');
  var startrow = 2;
  var lastRow = ss.getLastRow();
  var lastCol = 10;
  var range = ss.getRange(2, 1, lastRow, lastCol);
  var data = range.getValues();
  var html='';//Remove
  for (var i = 0; i < data.length; i++) {
    var row = data[i];
    var AccountName = row[0];
    var email = row[1];
    var Parent = row[2];
    var Consent = row[4];
    var StudentData = row[3];
    var CarriageReturns = row[6];
    var Trigger = row[7];
    var emailSent = row[8];
    var subject = "Your Application";
    var NewString = StudentData.split('\n').join('<br />');
    //var message = "<HTML><BODY><font size=4>" + "<P>" + "Hello " + Parent + ',' + "<BR>" +"<BR>" + NewString + "<BR>" +"</HTML></BODY>";
    var message=Utilities.formatString('<HTML><BODY><font size=4><P>Hello %s,<BR><BR>%s<BR></HTML></BODY>', Parent,NewString);
    var recipientsTo = email;
    if (AccountName.length > 0 && Trigger >= CarriageReturns && emailSent != 'EMAIL_SENT') {
      //MailApp.sendEmail({subject: subject,to: recipientsTo,htmlBody: message});
      html+=Utilities.formatString('%s- %s',i+1,message);//Remove
      //ss.getRange(startrow + i, 9).setValue('EMAIL_SENT');
    }
  }
  var userInterface=HtmlService.createHtmlOutput(html);//Remove
  SpreadsheetApp.getUi().showModelessDialog(userInterface, 'Email Message');//Remove
}
...