从Gsheets发送电子邮件时自定义单元格格式/脚本?

时间:2020-04-21 19:38:15

标签: email google-apps-script google-sheets

从Google表格发送电子邮件时,是否有人知道如何在脚本中或单元格公式中自定义电子邮件正文的格式?

第一个附件是脚本发送的不正确的电子邮件正文

第二个附件是正确的电子邮件正文格式,我需要发送脚本

以下代码:

// has been sent successfully.
var EMAIL_SENT = 'EMAIL_SENT';

/**
 * Sends non-duplicate emails with data from the current spreadsheet.
 */
function sendEmails2() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2; // First row of data to process
  var numRows = 1000; // Number of rows to process
  // Fetch the range of cells A2:D1000
  var dataRange = sheet.getRange(startRow, 1, numRows, 1000);
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var emailAddress = row[0]; // First column
    var subject = row[3]; // Second column
    var message = row[3]; // Third column
    var emailSent = row[3]; // Fourth column
    if (emailSent !== EMAIL_SENT) { // Prevents sending duplicates
      MailApp.sendEmail(emailAddress, subject, message);
      sheet.getRange(startRow + i, 4).setValue(EMAIL_SENT);
      // Make sure the cell is updated right away in case the script is interrupted
      SpreadsheetApp.flush();
    }
  }
}

1 个答案:

答案 0 :(得分:1)

问题:

将纯文本添加到电子邮件正文时,在〜78个字符后添加换行符,例如,您可以在此处看到Gmail API - plaintext word wrapping

为避免这种情况,您应该使用MailApp.sendEmail(recipient, subject, body, options) 添加HTML正文而不是纯文本

此外,如果要根据单元格值(<br>来保持换行符,则需要添加HTML换行符\n)。您可以为此使用String.prototype.replace()

解决方案:

替换此:

MailApp.sendEmail(emailAddress, subject, message);

为此:

MailApp.sendEmail(emailAddress, subject, "", {
  htmlBody: message.replace(/\n/g,'<br>')
});

参考: