Включить скрытую переменную в форму, отправленную по электронной почте - Google Apps Script - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть сценарий, который отправляет форму 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 person&#39;s email address?  " title="" style="">

Насколько я понимаю,что мне, возможно, придется использовать Scriptlets, но я не понимаю синтаксис и пытался поиграть с ним безрезультатно.Кто-нибудь может помочь?

Большое спасибо

1 Ответ

0 голосов
/ 10 апреля 2019

Поместите заполнитель как {email} в form.html:

<input type="hidden" name="email" value="{email}">

затем перед отправкой замените его на фактическое электронное письмо:

var htmlMessage = HtmlService.createHtmlOutputFromFile("form.html").getContent();
htmlMessage = htmlMessage.replace('{email}', toEmailAddress);
...