#javascript #google-apps-script #google-sheets #scriptlet
#javascript #google-apps-script #google-sheets #скриптлет
Вопрос:
У меня есть некоторый скрипт, который отправляет HTML-форму по электронной почте следующим образом:
function sendFormEmail() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Email list");
var emailRange = sheet.getRange("B2:B");
var emails = emailRange.getValues();
var lastRow = emails.filter(String).length;
var originalEmailRange = sheet.getRange("A2:A");
// Logged emails
var logSheet = ss.getSheetByName("Email log");
var timeStampRange = logSheet.getRange("A2:A");
var timeStamps = timeStampRange.getValues();
var logEmailRange = logSheet.getRange("B2:B");
var logEmails = logEmailRange.getValues();
var lastLog = logEmails.filter(String).length;
var adjustedLastLog = lastLog 2;
var userRange = logSheet.getRange("C2:C");
// Logger.log(adjustedLastLog);
for(var i=0; i<lastRow; i ) {
var toEmailAddress = emails[i];
var htmlMessage = HtmlService.createHtmlOutputFromFile("form.html").getContent();
var subject = "Connect";
var message = "";
logSheet.getRange("B" (i adjustedLastLog)).setValue(emails[i]);
logSheet.getRange("A" (i adjustedLastLog)).setValue(new Date());
logSheet.getRange("C" (i adjustedLastLog)).setValue(Session.getActiveUser().getEmail());
MailApp.sendEmail(toEmailAddress, subject, message, {
htmlBody: htmlMessage
});
}
originalEmailRange.setValue("");
var ui = SpreadsheetApp.getUi();
var result = ui.alert(
'Good news!',
"Your form was successfully sent to your database of emails. Go to the 'Email log' tab to see a log of all emails sent using this function.",
ui.ButtonSet.OK);
}
Что я хочу сделать, так это каким-то образом преобразовать адрес электронной почты активного пользователя в скрытый ввод в форме, чтобы при отправке пользователем, который получает форму, это электронное письмо возвращалось вместе с ним.
Входные данные в HTML-форме представляют собой довольно простые текстовые входные данные, такие как:
<input type="text" style="border-radius: 10px; padding: 10px; width: 80%; border: 2px solid #1CA1F2" name="entry.2082149504" value="" class="ss-q-short" id="entry_2082149504" dir="auto" aria-label="And what is this personamp;#39;s email address? " title="" style="">
Я понимаю, что мне может понадобиться использовать скриптлеты, но я не понимаю синтаксис и пытался поиграть с ним безрезультатно. Кто-нибудь может помочь?
Большое спасибо
Комментарии:
Ответ №1:
Поместите заполнитель типа {email}
в form.html
:
<input type="hidden" name="email" value="{email}">
затем замените его на фактическое электронное письмо перед отправкой:
var htmlMessage = HtmlService.createHtmlOutputFromFile("form.html").getContent();
htmlMessage = htmlMessage.replace('{email}', toEmailAddress);