首页 > 解决方案 > MailApp.sendEmail 函数运行没有错误,但没有发送电子邮件

问题描述

下面的脚本运行没有任何明显的错误,但没有发送电子邮件。关于为什么的任何想法?

function sendEmailLoop() {

  var sheets =   SpreadsheetApp.getActiveSpreadsheet().getSheets();
  sheets.forEach(function(sheet) {
    var range = sheet.getDataRange();

    if (sheet.getName() == "Summary") //Disregard tab named 'Summary' 
    {      
    }
    else {    
      var range = sheet.getDataRange(); //to set the range as array
      var values = range.getDisplayValues(); //to get the value in the array
      var lastRow = range.getLastRow();
      var ss = SpreadsheetApp.getActiveSpreadsheet();  //declare the spreadsheet
      var sheet = ss.getSheetByName("Sheet1");
      var Title = values[0][0];         //[Title] cell A1
      var URL = values[0][1];           //[URL] cell B1
      var i;
      var logContent = '';

      for (i = 3; i < lastRow; i++) {   
        var Name = values[i][0];     //[Name] cell A++
        var Email = values[i][1];        // [Email] cell B++

        Logger.log('to: ' + Email);
        Logger.log('subject: ' + Name + Title + 'Test');
        Logger.log('message: ' + 'This is a test message for the training that can be found at ' + URL);
        /*
        MailApp.sendEmail({
          to: Email,
          subject: Name + Title + 'Test',
          message: 'This is a test message for the training that can be found at ' + URL});
        */
      }; //end for loop - email tab data
    };   // end 'else'
  }); // end function(sheet)       
} // end SendEmailLoop()  

这是成功执行的 Stackdriver 日志(成功意味着没有错误,但仍然没有发送电子邮件):

Stackdriver 日志

与脚本关联的电子表格的结构:

与脚本关联的电子表格

注意 - 此脚本的早期版本不包括sheets.forEach()方法调用(即循环遍历电子表格的每个选项卡)并且电子邮件发送正常。

是否缺少发送或接收电子邮件与我有很多工作表并且此功能循环通过它们的事实有关?

标签: emailgoogle-apps-scriptgoogle-sheets

解决方案


function sendEmailLoop() {
  var exclA=['Summary'];
  var ss=SpreadsheetApp.getActive();
  var sheets=ss.getSheets();
  sheets.forEach(function(sheet) {
    if (exclA.indexOf(sheet.getName())==-1) {      
      var range=sheet.getDataRange();
      var values=range.getDisplayValues(); 
      var lastRow=range.getLastRow();
      var Title=values[0][0];
      var URL=values[0][1];  
      var logContent='';
      for (var i=3; i <values.length; i++) {   
        var Name=values[i][0];
        var Email=values[i][1];
        Logger.log('to: %s\nsubject: %s %s Test\nmessage: %s This is a test message for the training that can be found at %s',Email,Name,Title,URL);
        /*
        MailApp.sendEmail({
        to: Email,
        subject: Name + Title + 'Test',
        message: 'This is a test message for the training that can be found at ' + URL});
        */
      }
    }
  });
}

推荐阅读