簡體   English   中英

如何根據谷歌應用程序腳本中的電子表格日期發送電子郵件?

[英]How to send email according to spreadsheet dates in google apps script?

谷歌驅動器文件夾中有五個電子表格將數據發送到一封電子郵件。

到目前為止,電子表格中的所有數據都將發送到電子郵件。 如何按日期對電子表格進行排序,以便只發送最后四個電子表格數據。 這些是我的電子表格的名稱: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 月的電子表格數據發送到電子郵件

  • 您想通過根據電子表格名稱選擇電子表格來發送電子郵件。

如果我的理解是正確的,這個修改怎么樣?

修改點:

  • 為了選擇電子表格,創建數組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 ,我認為那些可能是“Jan 2019 Workbook”、“Feb 2019 Workbook”、“March 2019 Workbook”、“April 2019 Workbook”。 如果要修改它們,請修改上述腳本的spreadsheetNames數組。

參考:

如果我誤解了您的問題並且這不是您想要的結果,我深表歉意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM