Включение в Apps Script html необходимого письма
У меня есть скрипт в Google Apps Script, который я использую для отправки необходимых писем при заполнении Google Form. Т.е., когда человек отправляет форму, на указанную в определенном столбце электронную почту ему приходит письмо. На данный момент код выглядит так:
Код работает +- правильно. Иногда не приходит первая рассылка, но в целом поправимо. Я же не могу встроить в переменную body нужный мне html код. Как правильно вставить html, чтобы письма отображались корректно? Просто с тем, что я пробую сейчас, у меня просто даже сам Apps Script не сохраняет. Заранее спасибо!
function sendEmailToClient2() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
//Лист текущей таблицы с именем "PP answers", в который загружаются ответы из формы, записан в переменную:
var listAnswers = ss.getSheetByName('PP answers');
//Получен email клиента из ячейки с адресом: последняя строка, 6 ряд, - и записан в переменную:
var clientEmail = listAnswers.getRange(listAnswers.getLastRow(),6).getValue();
var clientEmails = listAnswers
.getRange(2,6,listAnswers.getLastRow()-2)
.getValues().flat();
if(clientEmails.includes(clientEmail)) {
var body =
'Ты перезаписался на курс Python Pro. Мы свяжимся с тобой и уточним детали';
// адрес уже есть, отправляем письмо для дубликатов
} else {
var body =
'Ты записался на курс Python Pro. Мы свяжимся с тобой и уточним детали';
// адрес новый, отправляем письмо для новичков
}
MailApp.sendEmail(clientEmail, "Ваша заявка получена",'',{htmlBody: body});
}
- Возникла ошибка: сообщение приходит не только тому, кто добавился в столбец, но и всем тем, кто был до него(((
Ответы (1 шт):
Формирование строк в коде может быть очень затруднительным и непрактичным. Особенно с точки зрения чтения кода. Поэтому используют сервис шаблонов.
В проекте необходимо создать файл Шаблон письма.html. В новой IDE при вводе имени файла его расширение не указывается.
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<!-- Стили -->
<style>
.italic {
font-style: italic;
}
.bolder {
font-weight: bolder;
}
</style>
</head>
<body>
<div>
<h1 class="italic">
<?!= Заголовок ?>
</h1>
<div>
<p>Здравствуйте,
<?!= ИмяКлиента ?>!
</p>
<p>На вашем счету
<span class="bolder"><?!= ОстатокСредств ?></span>.
</p>
</div>
</div>
</body>
</html>
И в коде обратиться к нему.
function sendEmail() {
const шаблон = HtmlService.createTemplateFromFile('Шаблон письма');
шаблон.Заголовок = `Это важное письмо от ${new Intl.DateTimeFormat('ru-RU').format(new Date())}`;
шаблон.ИмяКлиента = 'Сан Саныч';
шаблон.ОстатокСредств = new Intl.NumberFormat('ru-RU', {
style: 'currency',
currency: 'RUB'
}).format(50000);
const htmlBody = шаблон.evaluate().getContent();
MailApp.sendEmail({
to: '[email protected]',
subject: 'Письмо от нас!',
htmlBody
});
}
На всякий случай привел пример создания строки и из кода
шаблон.Заголовок = `Это важное письмо от ${new Intl.DateTimeFormat('ru-RU').format(new Date())}`;
Обратите внимание, что поддерживаются не все стили. Это нужно учитывать при формировании письма.
Результат
