如何根据Google Apps脚本中的电子表格日期发送电子邮件?

时间:2019-06-24 05:24:36

标签: sorting date google-apps-script google-sheets

google drive文件夹中有五个电子表格,可将数据发送到一封电子邮件。

到目前为止,电子表格中的所有数据都将发送到电子邮件中。如何按日期对电子表格进行排序,以便仅发送最后四个电子表格数据。 这些是我的电子表格的名称: 1. 2018年12月工作簿 2. 2019年1月工作簿 3. 2019年2月工作簿 4. 2019年3月工作簿 5. 2019年4月工作簿

function checkSalesss(){
  var file, files = 
 DriveApp.getFolderById("17Si9n3Uzf1yF6sGWaT2VygxLfPMnUgrE")
.getFilesByType(MimeType.GOOGLE_SHEETS)
  var body = ''; // Added
  var subject = []; // Added
  while (files.hasNext()) {
    file = files.next();
    var activeSpreadSheet = SpreadsheetApp.open(file);
    var sheets = activeSpreadSheet.getSheets();

    //loop through sheets to look for value
    for (var sheetIndex = 0; sheetIndex < sheets.length; sheetIndex++) {
      var sheet = sheets[sheetIndex];
      var data = sheet.getDataRange().getValues();
      var resultArr = [];

      //To Loop through the whole data Rows
      for (var i=1;i<data.length;i++) {

       //Takes columns from L to S (To loop through the Columns)
        for (var j=11;j<19;j++) {
          var cellVal = data[i][j];
          if (cellVal > 0) {
            resultArr.push([data[i][0],data[0][j],cellVal]);
          }
        }
      }
      if (resultArr.length>0) {
        var spreadsheetName = activeSpreadSheet.getName(); // Added
        subject.push(spreadsheetName); 
        body += "<br>" + "<b>"+ sheet.getName() + "(" + spreadsheetName + 
  ")" + "</b>" + "<br>"; 
        for (var m=0;m<resultArr.length;m++) {
          body+= "For Part No "+resultArr[m][0].toString()+" and Month 
"+resultArr[m][1].toString()+", Value is "+resultArr[m][2].toString()+" 
<br>";
        }
      }
    }
  }

  //send email
  if (subject.length > 0) {
    var s = "Alert " + " " + subject.join(",") + " " + " >6MO"; // Added
   MailApp.sendEmail({to: "abc@gmail.com",subject:"Alert", htmlBody: 
  body}); 
  }
}

我希望将2019年1月,2019年2月,2019年3月,2019年4月电子表格数据发送到电子邮件中

1 个答案:

答案 0 :(得分:1)

  • 您要通过根据电子表格名称选择电子表格来发送电子邮件。

如果我的理解是正确的,那么该修改如何?

修改点:

  • 要选择电子表格,请创建一个spreadsheetNames数组,其中包括要选择的电子表格名称。
  • 使用数组选择电子表格。在这种情况下,我添加了if (spreadsheetNames.some(function(e) {return e == spreadsheetName})) {}脚本。

修改后的脚本:

function checkSales(){
  var spreadsheetNames = [ //  Added
    // "Dec 2018 Workbook", // This was commented out. So the following 4 Spreadsheets are used for creating the data.
    "Jan 2019 Workbook",
    "Feb 2019 Workbook",
    "March 2019 Workbook",
    "April 2019 Workbook"
  ];

  var file, files = DriveApp.getFolderById("17Si9n3Uzf1yF6sGWaT2VygxLfPMnUgrE").getFilesByType(MimeType.GOOGLE_SHEETS);
  var body = '';
  var subject = [];
  while (files.hasNext()) {
    file = files.next();
    var activeSpreadSheet = SpreadsheetApp.open(file);
    var spreadsheetName = activeSpreadSheet.getName(); // Added
    if (spreadsheetNames.some(function(e) {return e == spreadsheetName})) { // Added
      var sheets = activeSpreadSheet.getSheets();
      for (var sheetIndex = 0; sheetIndex < sheets.length; sheetIndex++) {
        var sheet = sheets[sheetIndex];
        var data = sheet.getDataRange().getValues();
        var resultArr = [];
        for (var i=1;i<data.length;i++) {
          for (var j=11;j<19;j++) {
            var cellVal = data[i][j];
            if (cellVal > 0) {
              resultArr.push([data[i][0],data[0][j],cellVal]);
            }
          }
        }
        if (resultArr.length>0) {
  //        var spreadsheetName = activeSpreadSheet.getName(); // removed
          subject.push(spreadsheetName); 
          body += "<br>" + "<b>"+ sheet.getName() + "(" + spreadsheetName + ")" + "</b>" + "<br>"; 
          for (var m=0;m<resultArr.length;m++) {
            body+= "For Part No "+resultArr[m][0].toString()+" and Month "+resultArr[m][1].toString()+", Value is "+resultArr[m][2].toString()+" <br>";
          }
        }
      }
    }
  }
  if (subject.length > 0) {
    var s = "Alert " + " " + subject.join(",") + " " + " >6MO"; // Added
    MailApp.sendEmail({to: "abc@gmail.com",subject:"Alert", htmlBody: body}); 
  }
}

注意:

  • 关于last four spreadsheet data,我认为它们可能是“ 2019年1月工作簿”,“ 2019年2月工作簿”,“ 2019年3月工作簿”,“ 2019年4月工作簿”。如果要修改它们,请修改上面脚本的spreadsheetNames的数组。

参考:

如果我误解了您的问题,而这不是您想要的结果,我深表歉意。