我写了一个小代码,从电子表格中收集“文本”,“电子邮件”和“主题”,然后将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);
}
在此邮件中,“五月/十二月”,“ 171/26131”和“四月/十一月”是动态词。由于我的第二行邮件(如您在此图中所见)有时在“跟随”或有时在“关闭”(取决于这三个动态条目的长度)结束。
理想情况下,我的gmail宽度应该是动态的,并且应该在月份名称之后以“ Period(。)”结尾,在这种情况下,它应该是4月/ 11月。
我想检查一下,我们在GAS中是否有任何子选项可用来使“ Gmail宽度动态”?我浏览了文档中的MailApp.sendEmail
选项,但找不到更多详细信息。
在这方面的任何建议都会很有帮助。
此致
Alok
答案 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