处理Google MailApp的多个重复电子邮件

时间:2018-03-23 17:32:13

标签: loops email google-sheets duplicates

我正在尝试为Google表格创建一个执行以下操作的脚本:

1)在特定日期触发 2)根据日期标准编译来自列的信息 3)向每个唯一触发的电子邮件行发送多个列值的电子邮件摘要

我查了几个替代示例,但我无法掌握处理第3步的语法。

数据来自Google表单提交。

不断添加提交内容。脚本有一个时间驱动的触发器。

我希望它能够在触发日期为SAME电子邮件回复者编制条目的所有数据,并将用于不同电子邮件地址的数据分开。

我抓住了一个脚本,并尽我所能改变了它。 (见下文)

目前,它产生以下结果:

1)脚本根据日期正确触发 2)将触发列中的信息和报告在一封电子邮件中编译到触发行中的所有地址。(行为不正确)

目前,该脚本运行“for循环”以获取电子邮件正文的所有触发数据,并将所有数据发送到所有电子邮件。我明白为什么会这样做,但我无法理解如何执行上面的“第3步”。

我想我需要为电子邮件数据创建一个对象,并运行另一个“for循环”来隔离参考电子邮件。

我不确定从何处开始,或者如何获取列值以隔离所需的电子邮件。

电子表格布局:

A栏:时间戳 B栏:录制的电子邮件 C - F栏:个性化信息 G栏:请求的后续日期 H栏:剩余天数直至后续日期

数据集从第2行开始

当H列报告值为0时会触发电子邮件。

提前感谢您提供任何和所有帮助

当前脚本:

function checkReminder() {
  // get the spreadsheet object
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  // set the first sheet as active
  SpreadsheetApp.setActiveSheet(spreadsheet.getSheets()[0]);
  // fetch this sheet
  var sheet = spreadsheet.getActiveSheet();

  // figure out what the last row is
  var lastRow = sheet.getLastRow();

  // the rows are indexed starting at 1, and the first row
  // is the headers, so start with row 2
  var startRow = 2


  // grab column 8 (the 'days left' column) 
  var range = sheet.getRange(2,8,lastRow-startRow+1,1);
  var numRows = range.getNumRows();
  var reminder_date = range.getDisplayValues();

  //grab DOB column
  var DOB = sheet.getRange(2,4,lastRow-startRow+1,1)
  var DOBrange = DOB.getDisplayValues();

  //grab ph# column
  var phnum = sheet.getRange(2,5,lastRow-startRow+1,1)
  var phnumrange = phnum.getDisplayValues();

  //Admin Date of 1st shot
  var Admindate = sheet.getRange(2,6,lastRow-startRow+1,1)
  var Admin = Admindate.getDisplayValues();

  // Now, grab the patient name column
  range = sheet.getRange(2,3, lastRow-startRow+1,1);
  var patient_info_values = range.getValues();

  //grab email
  var Emailrows = sheet.getRange(2,2,lastRow-startRow+1,1);
  var Emaillist = Emailrows.getValues();


  var sendit = 0;
  var msg = "";
  var greeting = "This email is to remind your team to followup with the following individuals. \n \n";


  // Loop over the days left values
  for (var i = 0; i <= numRows - 1; i++) {
       var days_left = reminder_date[i][0];
  if(days_left == 0) {
      // if it's equal to 0, do something with the data.
      var Adminreport = Admin[i][0];
      var patient_name = patient_info_values[i][0];
      var DOB_name = DOBrange[i][0]; 
      var phnumgrab = phnumrange[i][0];
      msg = msg + " "+patient_name+"  DOB: "+DOB_name+" Phone#: "+phnumgrab+" First dose given "+Adminreport+"  \n\n";
      sendit++;
    }

  }
    if(sendit) 
  {
    MailApp.sendEmail(Emaillist, "Followup Reminder", greeting + msg);

  }

};

0 个答案:

没有答案