我们如何使用Google App脚本格式化电子邮件

时间:2019-06-11 13:32:01

标签: google-apps-script

我写了一个小代码,从电子表格中收集“文本”,“电子邮件”和“主题”,然后将gmail发送给收件人。 Google脚本工作正常,但是自动gmail的宽度是固定的。因此,当“文本”的长度更改时,gmail宽度不会更改,这会导致文本位置发生更改,并且看起来有些怪异。

我的代码示例:-

function temp2() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var dataSheet = ss.getSheetByName('Sheet1');
  var templateSheet = ss.getSheetByName('Sheet2');
  var emailTemplate2 = templateSheet.getRange("G1").getValue();
  var rec = templateSheet.getRange("C1").getValue();
  var sub = templateSheet.getRange("D1").getValue();
//  Logger.log(rec);
  MailApp.sendEmail(rec, sub, emailTemplate2);
}

我被截断的电子邮件的第一张图片:- image

我被截断的电子邮件的第二张图片:- image2

在此邮件中,“五月/十二月”,“ 171/26131”和“四月/十一月”是动态词。由于我的第二行邮件(如您在此图中所见)有时在“跟随”或有时在“关闭”(取决于这三个动态条目的长度)结束。

理想情况下,我的gmail宽度应该是动态的,并且应该在月份名称之后以“ Period(。)”结尾,在这种情况下,它应该是4月/ 11月。 我想检查一下,我们在GAS中是否有任何子选项可用来使“ Gmail宽度动态”?我浏览了文档中的MailApp.sendEmail选项,但找不到更多详细信息。

在这方面的任何建议都会很有帮助。

此致

Alok

1 个答案:

答案 0 :(得分:1)

您可以使用方法“ sendEmail(收件人,主题,正文,选项)”,将正文参数为空(“”),并使用htmlBody键添加选项Json(将代替正文值使用)。

在htmlBody值(字符串)中,您可以根据需要排列文本。在您的情况下,您可以从工作表中获取值,因此可以直接放置所有html代码,并将其与将成为电子邮件正文的工作表值连接起来。

这是一个有效的示例:

function temp2() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var dataSheet = ss.getSheetByName('Sheet1');
  var templateSheet = ss.getSheetByName('Sheet2');
  var emailTemplate2 = templateSheet.getRange("G1").getValue();
  var rec = templateSheet.getRange("C1").getValue();
  var sub = templateSheet.getRange("D1").getValue();
  //  Logger.log(rec);
  MailApp.sendEmail(rec, sub, "", {
    htmlBody: '<html lang="en"><head><meta charset="utf-8"></head><body><div style="width:1864px;">' + emailTemplate2  + '</div></body></html>'
  });
}

在这里,我将主体的所有内容放入<div>元素中,并将其width属性设置为1864px,您可以根据需要将其调整为一行来进行调整。

其他选项可以在工作表单元格内使用html代码,并使用<div><p><br><strong>,根据需要在其中设置文本格式,等

进一步阅读:https://developers.google.com/apps-script/reference/mail/mail-app