繁体   English   中英

Google Apps脚本-根据单元格中的数据发送电子邮件

[英]Google Apps Script - Send email based on data in cell

因此,我试图设置一个提醒电子邮件,以便根据单元格中的日期自动发送该电子邮件。 有点像: Google Apps脚本-根据单元格中日期发送电子邮件这是我的示例工作簿: https : //docs.google.com/spreadsheet/ccc?key=0AiHAV8ZZ5nexdDJqODhmamhldjN1ZTRKc09iZXNBZ3c#gid=0

这是我的代码:

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

for (i in data) {
var row = data[i];
var date = new Date();
date.setHours(0);
date.setMinutes(0);
date.setSeconds(0);
//Logger.log(date);
var sheetDate = new Date(row[2]);
//Logger.log(sheetDate);
var Sdate = Utilities.formatDate(date,'GMT+0200','yyyy:MM:dd')
var SsheetDate = Utilities.formatDate(sheetDate,'GMT+0200', 'yyyy:MM:dd')
 Logger.log(Sdate+' =? '+SsheetDate)
    if (Sdate == SsheetDate){
      var emailAddress = row[0];  // First column
      var message = row[1];       // Second column
      var subject = "It's time to practice!" +message;
      MailApp.sendEmail(emailAddress, subject, message);
      //Logger.log('SENT :'+emailAddress+'  '+subject+'  '+message)
        }    
 }
}

但是我不确定它是否正常运行,是否会自动发送电子邮件? 显然,我对脚本的了解很少。

您在此处共享的现有代码中只有1个错误,这使它无法正常工作:

var sheetDate = new Date(row [2]);

您的数组中只有2个索引,因此应为:

var sheetDate = new Date(row [1]);

另外,由于您使用的是Utilities.formatDate格式为yyyy:MM:dd格式,因此无需设置小时和秒,因为Utilities.formatDate返回的字符串没有时间成分。 此外,您无需创建sheetDate或date,它们都可以构造为Utilities.formatDate中的第一个参数(请参见下文)。 关于此主题的另一件事,因为您的日期值在电子表格中被格式化为日期,所以它们将作为日期对象返回给脚本,因此,实际上,不需要调用新的Date(row [1]) ..但没有任何伤害。

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

    for (i in data) {
      var row = data[i];
      //Logger.log(sheetDate);
      var Sdate = Utilities.formatDate(new Date(),'GMT-0500','yyyy:MM:dd')
      var SsheetDate = Utilities.formatDate(new Date(row[1]),'GMT+0200', 'yyyy:MM:dd')
      Logger.log(Sdate+' =? '+SsheetDate)
      if (Sdate == SsheetDate){
          var emailAddress = row[0];  // First column
          var message = row[1];       // Second column
          var subject = "It's time to practice!" +message;
          MailApp.sendEmail(emailAddress, subject, message);
          //Logger.log('SENT :'+emailAddress+'  '+subject+'  '+message)
       }    
     }
   }catch(err){
     Logger.log(err.lineNumber + ' - ' + err);
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM