如何使用正确的格式在谷歌应用脚​​本生成的电子邮件中添加签名到电子邮件

时间:2018-01-30 10:22:36

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

我有一个链接到Google工作表文件的电子邮件发件人,如下所示:

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]
    });
}

我有两个问题:

1-我想在电子邮件中添加包含徽标的签名。所以我需要粗体公司名称和徽标。我无法弄清楚如何插入图像或格式化文本。我已阅读了很多帖子和以下Google文档:https://developers.google.com/apps-script/reference/mail/mail-app

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

其次,我的电子邮件正文中有一个变量集,它从我的google工作表文档中检索一个值,如下所示:

html.contractorName = data.contractorName.toLowerCase();

但是,我实际上并不想要小写,我想要标题/正确的情况。我不知道如何实现这一点,特别要记住承包商名称可能是两个,三个,四个名字长。

由于

5 个答案:

答案 0 :(得分:1)

您可以将徽标和名称附加到message,然后以HTML格式发送电子邮件。

像这样的东西

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

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

https://developers.google.com/apps-script/reference/mail/mail-app#sendemailmessage

答案 1 :(得分:1)

请阅读console.log(vm.reversedMessage) // => 'olleH' vm.message = 'Goodbye' console.log(vm.reversedMessage) // => 'eybdooG' 文档here

MailApp.sendEmail()

获取徽标的Blob并将其分配给 // This code fetches the Google and YouTube logos, inlines them in an email // and sends the email function inlineImage() { var googleLogoUrl = "http://www.google.com/intl/en_com/images/srpr/logo3w.png"; var youtubeLogoUrl = "https://developers.google.com/youtube/images/YouTube_logo_standard_white.png"; var googleLogoBlob = UrlFetchApp .fetch(googleLogoUrl) .getBlob() .setName("googleLogoBlob"); var youtubeLogoBlob = UrlFetchApp .fetch(youtubeLogoUrl) .getBlob() .setName("youtubeLogoBlob"); MailApp.sendEmail({ to: "recipient@example.com", subject: "Logos", htmlBody: "inline Google Logo<img src='cid:googleLogo'> images! <br>" + "inline YouTube Logo <img src='cid:youtubeLogo'>", inlineImages: { googleLogo: googleLogoBlob, youtubeLogo: youtubeLogoBlob } }); } 属性。然后,您可以将其包含在HTML正文中。 使用HTML根据您的需要格式化正文并将其分配给inlineImages属性。 关于承包商名称,请尝试使用此原型函数:

htmlBody

它会将字符串中的每个单词大写,以便html.contractorName = data.contractorName.toProperCase(); String.prototype.toProperCase = function () { return this.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); }; 变为john dOe

答案 2 :(得分:1)

我有一个类似的sheetEmail文档。徽标问题花了我很长时间才解决,我最近找到了the following source的半便捷解决方案 相关代码可以将您的个人签名作为字符串,并且使用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;

您可以使用不同的标签来获取所需的格式。 要解决您的空格和新行问题,您可以搜索原始正文字符串并用html br&gt;替换换行符\ n;标签,但我无法帮助你了解具体细节!

答案 3 :(得分:0)

抱歉,是一个虚拟人,但是当我添加以下代码行

 var signature =
 Gmail.Users.Settings.SendAs.list("me").sendAs.filter(function(account){if(account.isDefault){return
 true}})[0].signature;

我的GAS收到错误消息

  

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

这是我第一次尝试创建GAS,但我不知道JS,因此我确定这将是一个基本错误。感谢您的帮助。

答案 4 :(得分:0)

您看到参考错误,因为您未启用Gmail API。您可以在the developer console中启用API。然后,您必须为正在处理的单个脚本启用它。点击资源>高级Google服务,然后翻转Gmail API旁边的开关