如何自动发送电子邮件,仅在当前星期内有特定单元格时发送

时间:2019-04-01 12:53:19

标签: javascript google-sheets-api

我需要在一封电子邮件摘要中发送多行和多列数据。

理想情况下,据我了解,我需要根据当前单元格是否处于下降状态来过滤结果。

我能够定义当前星期,但是我不确定如何将其集成并过滤到我的sendMail脚本中。

此外,电子邮件当前会在表格中显示结果,是否有任何方法可以格式化数据以使其按以下顺序显示?

Row[1]

Row[2]

Row[3]

Row[1]

Row[2]

Row[3]

Row[1]

Row[2]

Row[3]

我的问题是,在几周内我可能要发送三行以上的数据

道歉,如果其中任何一个都不明确,对此表示陌生,但出于工作目的需要它。

/

/Defining the current week//

function getWeekDates() {
  var now = new Date();
  var dayOfWeek = now.getDay(); //0-6
  var numDay = now.getDate();



  var start = new Date(now); //copy
  start.setDate(numDay - dayOfWeek);
  start.setHours(0, 0, 0, 0);


  var end = new Date(now); //copy
  end.setDate(numDay + (7 - dayOfWeek));
  end.setHours(0, 0, 0, 0);

  return [start, end];
}

var [start, end] = getWeekDates();

console.log(start.toLocaleString(), end.toLocaleString());

function filterDatesByCurrentWeek(dates){
   var [start, end] = getWeekDates();
  return dates.filter(function(d) {return  +d >= +start && +d < +end});
}






function sendEmail1(event){
const ss = SpreadsheetApp.getActive().getSheetByName('Sheet1')
 const data = ss.getRange(“A1:E50 ").getValues();
   const row = ss.getDataRange().getValues();
  const currentColumn = event.range.columnStart;

  if (ss.getName() !== 'Sheet1' || currentColumn !== 4 )  
    return;
  if (!event.value.match(/^(Deployed)$/)) 
 return;

  Logger.log(row);
  Logger.log(row[5]);




  // Sending the email 


  var emailBody = "Hi" + "<br><br>" + "Test:" + " <strong> " + "<br>" + row[0] + "</strong> \n\n" 
  + "<br>" + "\n"+ "<strong>" + "Scores: "+ "</strong> \n"   +row[4] 
  + "<br>" + " <strong> " + "Description: " +"</strong> \n\n" +  row[2]  
  + "<br>" + "<strong>"+ "Number of Labels: " + "</strong> \n" + row[6]  
  + "<br><br>" + "Yours truly," + "<br>" + "Test"; 
    var subject = "Test";
    Logger.log("sending email");
  MailApp.sendEmail('Email', subject, emailBody, {htmlBody: emailBody, cc: 'Email'});
    Logger.log("email sent");
}

0 个答案:

没有答案