我有一个链接到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();
但是,我实际上并不想要小写,我想要标题/正确的情况。我不知道如何实现这一点,特别要记住承包商名称可能是两个,三个,四个名字长。
由于
答案 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旁边的开关