编辑GoogleSheets“SendEmail”脚本,仅在符合条件时才发送电子邮件

时间:2015-05-15 16:40:11

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

我整个上午一直在网上搜索,但一直无法找到我想做的事情。我在这里找到了类似的帖子,但无法弄清楚如何根据我的需要调整它。

我是一名教师,我正在考虑如何在我们班级的孩子成绩低于C级时使用Google表格自动给父母发邮件。我能够快速找到脚本以让Sheets发送电子邮件,并且想知道是否可以编辑该脚本以仅在特定单元格中的值低于70时才发送电子邮件。

这是我找到的脚本。我将主题行编辑为“数学成绩”(这很容易弄清楚),但我想编辑它,以便只有在单元格D2(或D3,D4,D5等)中的值才会发送电子邮件)A低于70.(A栏有电子邮件,B栏有消息,C栏有学生姓名,D栏有他们的数字等级。)我觉得它应该是显而易见的,但我的脚本知识是非存在。有人可以帮忙吗?

function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;  // First row of data to process
  var numRows = 2;   // Number of rows to process
  // Fetch the range of cells A2:B3
  var dataRange = sheet.getRange(startRow, 1, numRows, 2)
  // Fetch values for each row in the Range.
  var data = dataRange.getValues(); 

  for (i in data) {
    var row = data[i];
    var emailAddress = row[0];  // First column
    var message = row[1];       // Second column
    var subject = "Math Grade";
    MailApp.sendEmail(emailAddress, subject, message);
  }
}

1 个答案:

答案 0 :(得分:0)

代码只获得2列数据,需要获得4列。

getRange(row, column, numRows, numColumns)

我添加了一行代码,用于获取工作表中有多少列。然后for循环得到一个额外的代码行来获得成绩,最后,添加了if条件检查。

function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;  // First row of data to process
  var numRows = 2;   // Number of rows to process
  var numOfColumns = sheet.getLastColumn();

  // Fetch the range of cells
  var dataRange = sheet.getRange(startRow, 1, numRows, numOfColumns);
  // Fetch values for each row in the Range.
  var data = dataRange.getValues(); 

  var grade = "";

  var i = 0;
  for (i=0;i<data.length;i++) {
    var row = data[i];
    var emailAddress = row[0];  // First column
    var message = row[1];       // Second column

    grade = row[3];

    if (grade < 70) {
      var subject = "Math Grade";
      MailApp.sendEmail(emailAddress, subject, message);
    };
  };
};