以google app脚本html格式,我想在电子邮件中提供不同的样式,一种用于电子邮件正文,另一种用于PDF文件。
遵循以下代码:
function doGet(request) {
return HtmlService.createTemplateFromFile('index')
.evaluate();//not all caps but it has to match the name of the file and it doesn't - Change to PAGE
}
function include(filename) {
return HtmlService.createHtmlOutputFromFile(filename)
.getContent();
}
/****** SHEET ****/
function userClicked(userInfo){
var url = "https://docs.google.com/spreadsheets/your-sheet-ID";
var ss = SpreadsheetApp.openByUrl(url);
var ws = ss.getSheetByName("Data");
ws.appendRow([userInfo.name, userInfo.email, userInfo.comment, new Date()]);
}
function submitData(form) {
var subject='New Feedback';
var body=Utilities.formatString('name: %s <br />email: %s<br />Comment: %s', form.name,form.email,form.comment);
/*** FOR HTML EMAIL **/
var htmlTemplate = HtmlService.createTemplateFromFile("PDF-page.html");
htmlTemplate.name = form.name;
htmlTemplate.email = form.email;
var htmlBody = htmlTemplate.evaluate().getContent();
/*** CREATE PDF ***/
var folderId = "your-folder-ID"; // Please set the folder ID. // Added
var blob = Utilities.newBlob(htmlBody, MimeType.HTML, form.name).getAs(MimeType.PDF); // Added - PDF from html email - coment line for serve PDF from document template
var file = DriveApp.getFolderById(folderId).createFile(blob); // Added
//****email****//
var aliases = GmailApp.getAliases()
Logger.log(aliases); //returns the list of aliases you own
Logger.log(aliases[0]); //returns the alias located at position 0 of the aliases array
GmailApp.sendEmail('[email protected]','New registration from:', 'object', {'from': aliases[0],subject: subject, htmlBody: body, attachments: [blob]}); // Modified
return Utilities.formatString('name: %s <br />Email: %s<br />Comment: %s<br />PDF: <a target="_blank" href="%s">see your PDF file</a>', form.name,form.email,form.comment,file.getUrl());
}
有关应用程序的更完整视图,请参阅我的另一篇文章:
Google App Script setTimeout Function problem
在下面的两节中
它通过var = body返回Gmail的基本样式]
显示以表格形式编辑的字段:
名称:示例名称
电子邮件:示例电子邮件
评论:示例评论
var body=Utilities.formatString('name: %s <br />email: %s<br />Comment: %s', form.name,form.email,form.comment);
/****************************************************************************/
GmailApp.sendEmail('[email protected]','New registration from:', 'object', {'from': aliases[0],subject: subject, htmlBody: body, attachments: [blob]});
在以下部分中时
var htmlTemplate = HtmlService.createTemplateFromFile("PDF-page.html");
htmlTemplate.name = form.name;
htmlTemplate.email = form.email;
var htmlBody = htmlTemplate.evaluate().getContent();
/*** CREATE PDF ***/
var folderId = "your-folder-ID"; // Please set the folder ID. // Added
var blob = Utilities.newBlob(htmlBody, MimeType.HTML, form.name).getAs(MimeType.PDF);
和此文件PDF-page.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<p>Dear <?= name ?> <?= email ?>,</p>
<p>Thanks for your interest, we'll get back to you shortly</p>
<p>Kind Regards,<br>Web App</p>
</body>
</html>
它通过var = htmlBody返回页面“ PDF-page.html”的页面样式
显示以表格形式编辑的字段:
亲爱的示例名称示例电子邮件
感谢您的关注,我们会尽快与您联系
亲切的问候
Web App
我知道我这样编辑脚本:
来自:
GmailApp.sendEmail('[email protected]','New registration from:', 'object', {'from': aliases[0],subject: subject, htmlBody: body, attachments: [blob]});
至:
GmailApp.sendEmail('[email protected]','New registration from:', 'object', {'from': aliases[0],subject: subject, htmlBody: HtmlBody, attachments: [blob]});
并启用脚本,以如下方式从模板文档制作PDF文件:
// PDF FROM DOCUMENT TEMPLATE //
var templateDocumentId = "your-document-ID"; // Please set the file ID of the template Google Document
var docId = DriveApp.getFileById(templateDocumentId).makeCopy("temp").getId();
var doc = DocumentApp.openById(docId);
doc.getBody().replaceText("{{name}}", form.name).replaceText("{{email}}", form.email).replaceText("{{comment}}", form.comment); // Modified
doc.saveAndClose();
var blob = doc.getBlob().setName(form.name);
DriveApp.getFileById(docId).setTrashed(true);
// var blob = Utilities.newBlob(htmlBody, MimeType.HTML, form.name).getAs(MimeType.PDF);
我得到结果。
也就是说,我获得了用于构建和格式化电子邮件/ PDF的单独控件
问题:
所以我希望我可以分别控制样式,格式和功能
GmailApp.sendEmail
例如:email-page.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<p>Name: <?= name ?> <?= email ?>,</p>
<p>Email. <?= email ?>,</p>
<p>Comment<?= comment ?>,</p>
<p>This is email page</p>
</body>
</html>
那是
PDF-page.html(我已经拥有)
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<p>Dear <?= name ?> <?= email ?>,</p>
<p>Thanks for your interest, we'll get back to you shortly</p>
<p>Kind Regards,<br>Web App</p>
</body>
</html>
我希望我已经清楚地解释了我的问题,请让我进一步澄清。
感谢您的关注。
解决方案!
好吧,我找到了解决问题的方法,并认为我会在下面分享它。为了提供两个不同的HTML文件,一个用于在HTML中创建emal文件,另一个用于HTML PDF文件,我使用了两个HtmlServices,如下所示重写了我的脚本:
function doGet(request) { return HtmlService.createTemplateFromFile('index') .evaluate();//not all caps but it has to match the name of the file and it doesn't - Change to PAGE } function include(filename) { return HtmlService.createHtmlOutputFromFile(filename) .getContent(); } function userClicked(userInfo){ var url = "https://docs.google.com/spreadsheets/d/your-spreadsheet-ID"; var ss = SpreadsheetApp.openByUrl(url); var ws = ss.getSheetByName("Data"); ws.appendRow([userInfo.name, userInfo.email, userInfo.comment, new Date()]); } function submitData(form) { var subject='New Feedback'; var body = Utilities.formatString('name: %s <br />Email: %s<br />Comment: %s', form.name,form.email,form.comment); /*** FOR HTML PDF **/ var htmlTemplate = HtmlService.createTemplateFromFile("PDF-page.html"); htmlTemplate.name = form.name; htmlTemplate.email = form.email; var pdf_html = htmlTemplate.evaluate().getContent(); /*** FOR HTML EMAIL **/ //image logo in email html from my google drive acount var ImageBlob = DriveApp .getFileById('your-image-ID') //change from your image-ID google drive acount .getBlob() .setName("ImageBlob"); var htmlTemplate = HtmlService.createTemplateFromFile("EMAIL-page.html"); htmlTemplate.name = form.name; htmlTemplate.email = form.email; var email_html = htmlTemplate.evaluate().getContent(); /*** CREATE PDF ***/ var folderId = "your-folder-ID"; // Please set the folder ID var blob = Utilities.newBlob(pdf_html, MimeType.HTML, form.name).getAs(MimeType.PDF); var file = DriveApp.getFolderById(folderId).createFile(blob); //**** send email ****// var aliases = GmailApp.getAliases() Logger.log(aliases); //returns the list of aliases you own Logger.log(aliases[0]); //returns the alias located at position 0 of the aliases array var userName = form.name; GmailApp.sendEmail('[email protected]','New Registration from: ' +userName, '', {'from': aliases[0], htmlBody: email_html, inlineImages: {image: ImageBlob}, attachments: [blob]}); return Utilities.formatString('name: %s <br />Email: %s<br />Comment: %s<br />PDF: <a target="_blank" href="%s">see your PDF file</a>', form.name,form.email,form.comment,file.getUrl()); }
为了提供两个不同的HTML页面,我如下更改了脚本:
从
/*** FOR HTML EMAIL **/ var htmlTemplate = HtmlService.createTemplateFromFile("PDF-page.html"); htmlTemplate.name = form.name; htmlTemplate.email = form.email; var htmlBody = htmlTemplate.evaluate().getContent();
TO
/*** FOR HTML PDF **/ var htmlTemplate = HtmlService.createTemplateFromFile("PDF-page.html"); htmlTemplate.name = form.name; htmlTemplate.email = form.email; var pdf_html = htmlTemplate.evaluate().getContent(); /*** FOR HTML EMAIL **/ //image logo in email html from my google drive acount var ImageBlob = DriveApp .getFileById('your-image-ID') //change from your image-ID google drive acount .getBlob() .setName("ImageBlob"); var htmlTemplate = HtmlService.createTemplateFromFile("EMAIL-page.html"); htmlTemplate.name = form.name; htmlTemplate.email = form.email; var email_html = htmlTemplate.evaluate().getContent();
从
//**** send email ****// var aliases = GmailApp.getAliases() Logger.log(aliases); //returns the list of aliases you own Logger.log(aliases[0]); //returns the alias located at position 0 of the aliases array var userName = form.name; GmailApp.sendEmail('[email protected]','New registration from:', 'object', {'from': aliases[0],subject: subject, htmlBody: body, attachments: [blob]}); // Modified
TO
//**** send email ****// var aliases = GmailApp.getAliases() Logger.log(aliases); //returns the list of aliases you own Logger.log(aliases[0]); //returns the alias located at position 0 of the aliases array var userName = form.name; GmailApp.sendEmail('[email protected]','New Registration from: ' +userName, '', {'from': aliases[0], htmlBody: email_html, inlineImages: {image: ImageBlob}, attachments: [blob]});
如何使用各自的CSS样式页面创建新的HTML页面,它们是:
文件EMAIL-Page.html
<!DOCTYPE html> <html> <head> <base target="_top"> <?!= include("css-email");?> </head> <body> <p class="image-logo"><img src='cid:image' width="150" height="56"></p> <h2 class="title-email">EMAIL Template HTML,</h2> <p class="text-email">Dear <?= name ?> <?= email ?>,</p> <p class="text-email">Thanks for your interest, we'll get back to you shortly</p> <p class="text-email">Kind Regards,<br>Web App</p> </body> </html>
文件css-email-html
<style> .title-email { text-left: center; margin-right: 550px; background-color: aliceblue; } .text-email { color: #3b9f04; }
文件PDF-page.html
<!DOCTYPE html> <html> <head> <base target="_top"> <?!= include("css-pdf");?> </head> <body> <p class="image-logo"><img src='cid:image' width="150" height="56"></p> <h2 class="title-pdf">PDF Template HTML,</h2> <p class="text-pdf">Name: <?= name ?></p> <p class="text-pdf">Email: <?= email ?>,</p> <table> <tr> <th>Table not inclued in EMAIL Html file</th> </tr> <tr> <td>Field not inclued in EMAIL Html file</td> </tr> </table> </body> </html>
文件css-pdf.html
<style> .title-pdf { text-align: center; margin-right: 50px; background-color: antiquewhite; } .text-pdf { color: red; } table { border-collapse: collapse; padding: 5px } table, th, td { border: 1px solid black; padding: 8px; } </style>
这是结果:
发送电子邮件
附带的pdf文件
现在我仍然有问题,在PDF文件中看不到“徽标”图像。如果您想在这方面帮助我,我将可以。预先感谢。
以google app脚本html格式,我想在电子邮件中提供不同的样式,一种用于电子邮件正文,另一种用于PDF文件。遵循以下代码:function doGet(request){...