Я в основном пытаюсь взять данные из электронной таблицы Google, создать электронное письмо в формате HTML и отправить его с данными.
Я справлялся с этим в прошлом, вот как.
Code.gs
function getData() {
var sh = SpreadsheetApp.getActive()
.getSheetByName('Form responses 1');
return sh.getRange(sh.getLastRow(), 1, 1, sh.getLastColumn())
.getValues()[0]
}
function testEmail() {
var htmlBody = HtmlService
.createTemplateFromFile('mail_template')
.evaluate()
.getContent();
var mailADdy = "email here";
MailApp.sendEmail({
to:mailADdy,
subject: 'Test Email markup - ' + new Date(),
htmlBody: htmlBody,
});
}
mail_template.html
<html>
<head>
<style>
@media only screen and (max-device-width: 480px) {
/* mobile-specific CSS styles go here */
}
</style>
</head>
<body>
// var data runs the getData function and puts it into an array we can use
<? var data = getData(); ?>
<? var first = data[2]; ?>
<? var second = data[3]; ?>
<? var third = data[4]; ?>
<div class="main">
<p style="text-align: center;"><strong>This is a test HTML email.</strong></p>
<table style="margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td style="text-align: left;">First question to be put here</td>
<td style="text-align: right;">
<strong><?= first ?></strong>
</td>
</tr>
<tr>
<td style="text-align: left;">Second question here</td>
<td style="text-align: right;">
<?= second ?>
</td>
</tr>
<tr>
<td style="text-align: left;">Third question here</td>
<td style="text-align: right;">
<?= third ?>
</td>
</tr>
<tr>
</tbody>
</table>
<p></p>
</div>
</body>
</html>
Мы запускаем функцию testEmail, в HTML она вызывает функцию getData и возвращает одномерный массив данных, которые мы используем в HTML.
Это все отлично работает. Но это только смотрит на последний ряд таблицы и отправляет электронное письмо. Он не перебирает строки.
Я хочу просмотреть несколько строк данных и отправить электронное письмо для каждой строки.
Я попробовал следующее, основываясь на моем предыдущем коде. Но он отправляет только одно письмо. Это первая строка в массиве.
Я только внес коррективы в функцию getData, но пока ничего не помогло. Вот где я сейчас нахожусь.
function getData(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1");
var range = sheet.getRange(2,1, sheet.getLastRow()-1, sheet.getLastColumn());
var values = range.getValues();
for (i=0; i < values.length ; i++) {
return values[i];
}
}
Он возвращает массив на каждой итерации цикла, отправляет только одно электронное письмо.
Кто-нибудь знает, как это исправить или есть какие-то указатели?
Я попытался передать переменные в функцию sendEmail,
что-то вроде
sendEmail(firstName, varA, varB) {
// code here
}
, но не могу понять, как вызывать / использовать их в файле HTML
Заранее спасибо