[英]Include a hidden variable in form sent by email - Google Apps Script
I have some script that is sending an HTML form by email as follows:我有一些脚本通过电子邮件发送 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);
}
What I want to do is somehow parse the active user's email address into a hidden input within the form so that when it is submitted by the user who receives the form, this email is returned with it.我想要做的是以某种方式将活动用户的电子邮件地址解析为表单中的隐藏输入,以便当收到表单的用户提交时,这封电子邮件会与它一起返回。
The inputs in the HTML form are pretty basic text inputs such as: 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's email address? " title="" style="">
My understanding is that I might need to use Scriptlets but I do not understand the syntax and have tried playing around with it to no avail.我的理解是我可能需要使用 Scriptlets,但我不理解语法,并尝试使用它但无济于事。 Is anyone able to help?有人可以帮忙吗?
Many thanks非常感谢
Put a placeholder like {email}
in form.html
:在form.html
放置一个像{email}
这样的占位符:
<input type="hidden" name="email" value="{email}">
then replace it with the actual email before sending:然后在发送之前用实际的电子邮件替换它:
var htmlMessage = HtmlService.createHtmlOutputFromFile("form.html").getContent();
htmlMessage = htmlMessage.replace('{email}', toEmailAddress);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.