Html 通过电子邮件应用程序脚本在一封电子邮件中发送多个值

Html 通过电子邮件应用程序脚本在一封电子邮件中发送多个值,html,google-apps-script,google-sheets,mailmerge,Html,Google Apps Script,Google Sheets,Mailmerge,我想建立一个谷歌脚本,只需按下一个按钮,就可以向列表中的每个用户发送一封电子邮件。我已经设置了按钮,但是我需要帮助将一个用户的所有值合并到一封邮件中,而不是将多封具有一个值的电子邮件发送给同一个人 例如: 我基本上需要Rose收到一封电子邮件,其中将列出以下项目: pens printer sketchpad ink and toners 等等 这是我到目前为止的脚本,电子邮件中还有一个HTML正文: function myFunction() { var name = 0; var

我想建立一个谷歌脚本,只需按下一个按钮,就可以向列表中的每个用户发送一封电子邮件。我已经设置了按钮,但是我需要帮助将一个用户的所有值合并到一封邮件中,而不是将多封具有一个值的电子邮件发送给同一个人

例如:

我基本上需要Rose收到一封电子邮件,其中将列出以下项目:

pens
printer
sketchpad
ink and toners
等等

这是我到目前为止的脚本,电子邮件中还有一个HTML正文:

function myFunction() {
  var name = 0;
  var email = 1;
  var objects = 2
  var emailTemp = HtmlService.createTemplateFromFile("body")
  var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
  var data = ws.getRange("A2:D" + ws.getLastRow()).getValues();
  data.forEach(function(row){
    emailTemp.fn = row[name];
    emailTemp.site = row[objects];
    var htmlMessage = emailTemp.evaluate().getContent();
    GmailApp.sendEmail(row[email], "No objects ordered", "Blabla",{htmlBody: htmlMessage})

  });
  
}
一个简单的方法是获得一个减少的唯一名称/电子邮件数组 这可以通过以下功能实现:

function onlyUnique(value, index, self) {
  return self.indexOf(value) === index;
}
  • 然后可以循环所有唯一的值
  • 查找包含它们的所有行
  • 将相应的对象推入数组
  • 根据需要在
    “body.html”
    中执行数组
样本:

var unique = ws.getRange("A2:A" + ws.getLastRow()).getValues().flat().filter(onlyUnique);
  unique.forEach(function(person){
    var row_objects =[];  
    var mail = "";
    data.forEach(function(row){
      if(row[name] == person){
        row_objects.push(row[objects]);
        mail = row[email];
      }
    });
    Logger.log(row_objects);
      emailTemp.fn = person;
    emailTemp.site = row_objects;
    var htmlMessage = emailTemp.evaluate().getContent();
    GmailApp.sendEmail(mail, "No objects ordered", "Blabla",{htmlBody: htmlMessage})
  })  

请添加
body.html
(要包含的代码应该是a)您好,谢谢您的帮助,但是,我在尝试运行脚本时遇到以下错误:ReferenceError:onlyUnique没有为以下行定义(第8行,文件“code”):
var unique=ws.getRange(“A2:a”+ws.getLastRow()).getValues().flat().过滤器(仅限Yunique)是否在脚本中插入了函数定义?也就是说,除了已经存在的函数之外,
myFunction()
?你的脚本中需要两个函数。该死,我忘了对不起,这里完全是初学者。谢谢你的帮助!很高兴帮助你!出于文档目的,如果可以,请接受答案(✓) 这对你很有帮助——它还可以帮助将来遇到同样问题的其他人找到解决方案:)