当一栏显示“是”时,Google脚本会发送电子邮件

时间:2018-03-20 02:51:14

标签: google-sheets conditional

我终于得到了代码发布在这里!

我想出了大部分内容,但只有两件事。

由于某种原因,它发送了两封电子邮件,而不是一封。

我想将数组打印为这样的列表:

  • 对象1
  • 对象2
  • 而不是在电子邮件中打印“对象1,对象2等”。任何建议如何做这将是有帮助的。谢谢!

picture of code is attached

var EMAIL_SENT = "EMAIL_SENT";

function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 3;  
  var numRows = 2;   
  var dataRange = sheet.getRange(startRow, 1, numRows, 15)
  var data = dataRange.getValues();
  for (i = 0; i < data.length; ++i) {          
    var row = data[i];
    if(row[6]==0) {
      var emailSent = row[14];
      if(emailSent != EMAIL_SENT) {
        var emailAddress = row[0];  
        var name = row[2]
        var list1 = [];
        for (j = 10; j < 12; ++j) {
          if(row[j] != "") {
            list1.push(row[j]);              //if you know how to make this print in different rows in the e-mail, that would be helpful
          }
        }
        var list2 = [];
        for (j = 12; j < 14; ++j) {
          if(row[j] != "") {
            list2.push(row[j]);             //if you know how to make this print in different rows in the e-mail, that would be helpful
          }
        }
        var message = " " +emailSent+ "Hello, \n\n The first part of " +name+ "'s Unit 8 Project for Geometry is due this Friday, March 23rd. This includes sections 8-1 and 8-2. By this date, students are expected to have received feedback from me on their 8-1 and 8-2 assignments and revised their work for a summative grade. Unfortunately, " +name+ " still has not submitted all of these assignments to receive feedback from me. The following assignments are currently missing: \n" +list1+ "\n\n It is also important that the independent practice be completed as well to make sure that students grasp a full understanding of what we are learning in the project. Currently " +name+ " is missing the following independent practice for these lessons: \n" +list2+ "\n\n Please check with " +name+ " to make sure these assignments are completed as soon as possible. Let me know if you have any questions about what needs to be completed for Friday. Thank you!"; 
        var subject =  "" +name+ "'s Unit 8 Project Missing Work";
        MailApp.sendEmail(emailAddress, subject, message);
        sheet.getRange(startRow + i, 15).setValue(EMAIL_SENT);        //this doesn't work after I added the array. Any idea why?
        SpreadsheetApp.flush();
      }
    }
  }
}
var spreadsheet = SpreadsheetApp.getActive();
var menuItems = [
  {name: 'Send Emails', functionName: 'sendEmails'}
];
spreadsheet.addMenu('Send Emails', menuItems);

1 个答案:

答案 0 :(得分:0)

弄明白:)

var EMAIL_SENT = "EMAIL_SENT";

function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 3;  
  var numRows = 13;   
  // Fetch the range of cells A3:I17
  var dataRange = sheet.getRange(startRow, 1, numRows, 25)
  var data = dataRange.getValues();
  for (i = 0; i < data.length; ++i) {          //collects data for all values in rows and columns specified in 5,6, and 8
    var row = data[i];                         //gives an index to data in each row
    if(row[3]=="YES") {                        //ensures that it says "YES" in the e-mail column
      var emailSent = row[24];                 //checks value of emailSent row
      if(emailSent != EMAIL_SENT) {            //avoids sending duplicates if an e-mail is sent
        var emailAddress = row[0];             //collects parent e-mail address
        var name = row[2]                      //collects student name
        var list1 = [];                        //creates an empty list for missing assignments
        for (j = 15; j < 20; ++j) {            //adds assignments to list if cells are not blank
          if(row[j] != "") {
            list1.push(row[j]);              
          }
        }
        texta = ""                             //creates an empty textbox for the list of assignments
        if(list1.length>0) {                   //creates a textbox for assignments as a bulleted list if list is not empty
          text1 = "";
          for (k=0; k<list1.length; ++k) {
            text1 += " • " +list1[k]+ "\n";
          }
          texta += "The second part of " +name+ "'s Unit 8 Project for Geometry is due next Tuesday, April 3rd. This includes sections 8-1, 8-2, 8-3, 8-4, and the interview/research portion. By this date, students are expected to have received feedback from me on all of their assignments and revised their work for a summative grade. Unfortunately, " 
          +name+ " still has not submitted all of these assignments to receive feedback from me. The following assignments are currently missing: \n" +text1;
        }
        var list2 = [];                       //creates a second empty list for missing assignments - IP
        for (j = 20; j < 24; ++j) {           //adds assignments to list if cells are not blank
          if(row[j] != "") {
            list2.push(row[j]);               
          }
        }
        textb = ""                            //creates an empty textbox for list of missing IP
        if(list2.length>0) {                  //adds assignments to textbox as a bulleted list if list is not empty
          text2 = "";
          for (k=0; k<list2.length; ++k) {
            text2 += " • " +list2[k]+ "\n";
          }
          textb += "\n\n It is also important that the independent practice be completed as well to make sure that students grasp a full understanding of what we are learning in the project. Currently " +name+ " is missing the following independent practice for these lessons: \n" 
          +text2+ ""; 
        }
        var message = "Hello, \n\n " +texta+ "" +textb+ "\n\n Please check with "              //message body for e-mail
        +name+ " to make sure these assignments are completed as soon as possible. Let me know if you have any questions about what needs to be completed for next week. Thank you!"; 
        var subject =  "" +name+ "'s Unit 8 Project Missing Work";                            //subject line for e-mail
        MailApp.sendEmail(emailAddress, subject, message);                                    //sends e-mail with given e-mail address, subject, and message
        sheet.getRange(startRow + i, 25).setValue(EMAIL_SENT);                                //updates spreadsheet once an e-mail is sent
        SpreadsheetApp.flush();                                                               //adds code to spreadsheet before continuing
      }
    }
  }
}
var spreadsheet = SpreadsheetApp.getActive();                                                 //creates a send e-mails button in spreadsheet
var menuItems = [
  {name: 'Send Emails', functionName: 'sendEmails'}
];
spreadsheet.addMenu('Send Emails', menuItems);