GAS:每人只发送一次提醒电子邮件

时间:2016-04-13 13:18:01

标签: google-apps-script google-sheets reminders

我是Google Apps脚本的新手,我编写了一个脚本,可以在Google电子表格中设置一个群组任务列表,并在今天的任务到期时自动发送人员提醒。

脚本工作正常,但我想改进它,因为在我的脚本中,如果我今天有3个任务,我会收到3封不同的电子邮件。有没有办法每人只发送一封电子邮件,并回顾一下他们今天所有应有的任务?

我已经找了一段时间但找不到任何东西。

非常感谢!

Spreadsheet pic

function Reminders() {

  var sheet = SpreadsheetApp.getActiveSheet();
  var newEmployee = sheet.getRange("C1").getValue();
  var sheetId = SpreadsheetApp.getActiveSpreadsheet().getId();
  var EMAIL_SENT = "OUI"

  var dataRange = sheet.getRange(7, 200, 1, 12) // (sart Row, N° of Rows, Start Column, n° of Columns)
  var data = dataRange.getValues();
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var emailAddress = row[4]; // We look for email adress on colum 5
    if (emailAddress == "") continue;

    var subject = "Reminder - you have a task due today for " + newEmployee;
    var message = row[2];
    var joursrestants = row[7]; // We look for days left before task deadline in column 8
    var statut = row[9]; // We look for task statut in colum 9


    if (joursrestants == "0" && statut == "A FAIRE") { // if days left before task = 0 AND status = "A FAIRE" :

      // A. We send a reminder Email
      MailApp.sendEmail(emailAddress, subject, message, {
          name: 'Rappel automatique',
          replyTo: 'no-reply@socomore.com',
      });

      // B. We write in colum 10 that a reminder has been sent
      sheet.getRange(startRow + i, 9).setValue(EMAIL_SENT)
      SpreadsheetApp.flush();
    }
  }
}

1 个答案:

答案 0 :(得分:0)

有几种方法可以做到。

要使电子邮件包含摘要信息,请在循环中创建一个添加到自身的字符串

    message= row[2] + message;

您可以按名称对电子表格进行排序,将MailApp放在if语句中,该语句检查下一行是否有不同的名称,如果它确实发送了电子邮件。

如果您不想按名称排序,则可以循环遍历所有可能名称的数组。