表单电子邮件与脚本和 html 编码多人和不同的链接合并

问题描述

我在谷歌表单中添加了许多(80+)来预填充表单并让它们进入并初始化并修复表单上的任何缺失数据。我正在向每个人发送该程序的电子邮件提醒,并希望同时使用谷歌表格中的脚本将他们的链接发送到表单。 在 youtube 上找到类似的内容后,我将这个脚本放在了一起,但在我的电子邮件中使用 html 编码很难发送给每个人。

function sendEmail() {
var email = 0;
var name = 1;
var link = 2;

var emailTemp = HtmlService.createTemplateFromFile("Email")

var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var wsSettings = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Settings");

var name = wsSettings.getRange("B2").getValue();
var subject = wsSettings.getRange("B1").getValue();

var data = ws.getRange("A2:D" + ws.getLastRow()).getValues();

data = data.filter(function(r){ return r[3] == true });


data.forEach(function(row){
  emailTemp.e = row[email];
  emailTemp.n = row[name];
  emailTemp.l = row[link];
  var htmlMessage = emailTemp.evaluate().getContent();
  GmailApp.sendEmail(
    row[email],subject,"Your email doesn't support HTML.",{name: "name",htmlBody: htmlMessage}
     );

});

}

Here is my html for my email message:
<!DOCTYPE html>
<html>
<head>  
</head>
<body>  
<p><span style="font-family: arial;"><span style="font-family: 'arial black',sans-serif;">Dear <?= n ?>,</span><br /><br />This email will take you to the pre-populated Google Form used to record attendance for <span style="font-family: 'arial black',sans-serif;"><strong>Supporting Children and Families in our Community</strong></span> on January 22,2021,held from 12:00-3:00 pm.<br /><br />Please visit this <strong><span style="color: #0000ff;">Link</span></strong> to complete any missing data and initial in before clicking on the submit button. <span style="color: #ba372a;">You will only be able to sign-in for the training on January 22,2021</span>,so do not forget to complete the form if you would like a certificate for attending or SCECHs. </span></p>
<p><span style="font-family: arial;">If you kNow <strong><span style="color: #843fa1;">someone that is attending that did not receive an email with a form to complete</span></strong>,please have them contact me ASAP so they have a form to complete to sign-in.</span></p>
<p><span style="font-family: arial;">To reach the zoom presentation for <strong>Supporting Children and Families in our Community,</strong> please click here. The link will only work on January 22,near the start time.</span></p>
<p><span style="font-family: arial;"><br />If you have any questions or concerns,please let me kNow.</span></p>
<p><span style="font-family: arial;"><br />Best Regards,<br /><span style="font-family: 'arial black';">Erika Rupert</span><br />Bay-Arenac ISD<br /><strong><a href="mailto:[email protected]">[email protected]</a></strong><br /><br />&nbsp;</span></p>
</body>
</html>

我很挣扎,因为每个人的链接都不一样。 以下是表格:https://docs.google.com/forms/d/1gb6rmbx9EjWSfyRAJyVt3HojIcsMApGZhZRDThDm40g/edit?usp=sharing,为每个注册参加的人填充。 预先感谢您的帮助。

请注意,除非我的组织批准,否则我无法添加 Google 应用。大多数是不允许的。

解决方法

要在 HTML 中包含链接,您需要一个标签。

您需要在 html 代码中包含以下内容,其中链接用于创建一个可点击的项目,以显示用户需要的网页:

<a href="<?= l ?>">Link</a>

我对您发送电子邮件的代码不太了解,下面是一个有效的代码:

function sendEmail() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getSheetByName('Sheet1');
  var rng = sh.getDataRange();
  var val = rng.getDisplayValues();
  var lr = rng.getLastRow();
  var name = sh.getRange("B2").getValue();
  var subject = sh.getRange("B1").getValue(); 
  for (var i = 1; i < lr; i++) {
    if (val[i][0] != ""){
      var html = HtmlService.createTemplateFromFile('Email');
      html.e = val[i][0];
      html.n = val[i][1];
      html.l = val[i][2];
      var htmlMessage = html.evaluate().getContent();
      GmailApp.sendEmail(
        val[i][0],subject,"Your email doesn't support HTML.",{name: name,htmlBody: htmlMessage}
      );
    }
  }
}