Javascript 如何在GoogleApps脚本生成的具有正确格式的电子邮件中向电子邮件添加签名

Javascript 如何在GoogleApps脚本生成的具有正确格式的电子邮件中向电子邮件添加签名,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我有一个电子邮件发件人链接到google sheets文件,如下所示: function sendEmail(form) { const sSheet = SpreadsheetApp.getActiveSpreadsheet(); const file = DriveApp.getFileById(sSheet.getId()); const documentUrl = file.getUrl(); var toEmail = form.toAddress; var ccEmail =

我有一个电子邮件发件人链接到google sheets文件,如下所示:

function sendEmail(form) {
const sSheet = SpreadsheetApp.getActiveSpreadsheet(); 
const file = DriveApp.getFileById(sSheet.getId());
const documentUrl = file.getUrl();

var toEmail = form.toAddress;  
var ccEmail = form.ccAddress;  
var subject = form.subject;
var message = form.message;


const folderId = "";
const ssId = sSheet.getId();
const returnFlag= 'blob';

if (form.process == "sendHotelRegistration"){
var fileName = "Hotel Registration Form";
var sheetId = sSheet.getSheetByName("Hotel Registration form").getSheetId();
var sheet= sSheet.getSheetByName("Hotel Registration form");
sheet.showSheet();
} else if (form.process == "updateRegistry"){
var fileName = "Hotel Contract Document";
var sheetId = "All";
}

var pdfFile = createPDF(folderId, ssId, fileName, sheetId, returnFlag);

MailApp.sendEmail({
    to:toEmail,
    cc:ccEmail,
    subject:subject,
    body:message,
    attachments:[pdfFile]
    });
}
html.contractorName = data.contractorName.toLowerCase();
我有两个问题:

1-我想在电子邮件中添加一个包含徽标的签名。所以我需要公司的粗体名称和标志。我不知道如何插入图像或格式化文本。我已经阅读了很多帖子和以下谷歌文档:

我试图在我的代码中实现这一点,但我无法让它工作

其次,我在电子邮件正文中设置了一个变量,它从我的google sheet文档中检索一个值,如下所示:

function sendEmail(form) {
const sSheet = SpreadsheetApp.getActiveSpreadsheet(); 
const file = DriveApp.getFileById(sSheet.getId());
const documentUrl = file.getUrl();

var toEmail = form.toAddress;  
var ccEmail = form.ccAddress;  
var subject = form.subject;
var message = form.message;


const folderId = "";
const ssId = sSheet.getId();
const returnFlag= 'blob';

if (form.process == "sendHotelRegistration"){
var fileName = "Hotel Registration Form";
var sheetId = sSheet.getSheetByName("Hotel Registration form").getSheetId();
var sheet= sSheet.getSheetByName("Hotel Registration form");
sheet.showSheet();
} else if (form.process == "updateRegistry"){
var fileName = "Hotel Contract Document";
var sheetId = "All";
}

var pdfFile = createPDF(folderId, ssId, fileName, sheetId, returnFlag);

MailApp.sendEmail({
    to:toEmail,
    cc:ccEmail,
    subject:subject,
    body:message,
    attachments:[pdfFile]
    });
}
html.contractorName = data.contractorName.toLowerCase();
然而,我并不想要小写,我想要标题/正楷。我想不出如何实现这一点,特别是考虑到承包商名称可能有两个、三个或四个名称


谢谢

您可以将您的徽标和名称附加到
邮件中
并以HTML格式发送电子邮件

像这样的

message += "<BR><BR>" + name + "<BR><BR> <inline logo image>";
消息+=”

“+name+”

”;
您可以使用
htmlBody
参数(将名称徽标添加到电子邮件正文)和
inlineImages
选项(附加徽标)。 请检查此项以获取完整参考


请阅读
MailApp.sendmail()
文档:


它将把字符串中的每个单词大写,这样
johndoe
就变成
johndoe

我有一个类似的sheetsEmail文档。徽标问题花了我很长时间才解决,我最近从中找到了一个半方便的解决方案。
相关代码可以将您的个人签名作为字符串,使用htmlBody,它可以包括图像、所有所需的格式等等

var signature = Gmail.Users.Settings.SendAs.list("me").sendAs.filter(function(account){if(account.isDefault){return true}})[0].signature;
从你对另一个回复的评论来看,你是对的,它会给你的正常身体带来一些问题。我的解决方案是在其周围包含html标记,并连接两个字符串。例如,我的原始身体存储在var bod中:

var body1 = "<p>"+bod+"</p>"+signature;
var body1=“”+bod+”

“+签名;
您可以使用不同的标记来获得所需的格式。
要解决空格和新行问题,您可以搜索原始正文字符串并用html br>标记替换换行符,\n但我无法帮助您解决具体问题

很抱歉我是个傻瓜,但是当我添加这行代码时

 var signature =
 Gmail.Users.Settings.SendAs.list("me").sendAs.filter(function(account){if(account.isDefault){return
 true}})[0].signature;
对我来说,我得到了错误信息

ReferenceError:“Gmail”未定义。(第127行,文件“代码”)


这是我第一次尝试创建GAS,我不知道JS,所以我相信这将是一个基本错误。感谢您的帮助。

您看到了引用错误,因为您没有启用Gmail API。您可以在中启用API。然后,您必须为正在处理的单个脚本启用它。单击Resources>Advanced Google services然后打开Gmail API旁边的on开关

这几乎是完美的。唯一的问题是htmlBody参数与从文本输入中提取的实际消息体相混淆。例如,使用simple body参数,它将拾取写入文本输入中的空格和新行,但是使用htmlBody,它将清除这些空格和新行。您可以尝试以编程方式将空格和新行转换为和
吗?因此,消息文本被转换为html。也许你会发现这些链接很有用,你可以投票/接受答案,这样其他人就可以从中受益。