MailApp.sendEmail功能运行时没有错误,但不会发送电子邮件

MailApp.sendEmail功能运行时没有错误,但不会发送电子邮件,email,google-apps-script,google-sheets,Email,Google Apps Script,Google Sheets,下面的脚本运行时没有任何可见错误,但不会发送电子邮件。你知道为什么吗 function sendEmailLoop() { var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets(); sheets.forEach(function(sheet) { var range = sheet.getDataRange(); if (sheet.getName() == "Summary") //Disre

下面的脚本运行时没有任何可见错误,但不会发送电子邮件。你知道为什么吗

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()  

函数sendEmailLoop(){ var sheets=SpreadsheetApp.getActiveSpreadsheet().getSheets(); 表.forEach(功能(表){ var range=sheet.getDataRange(); if(sheet.getName()=“Summary”)//忽略名为“Summary”的选项卡 { } 否则{ var range=sheet.getDataRange();//将范围设置为数组 var values=range.getDisplayValues();//获取数组中的值 var lastRow=range.getLastRow(); var ss=SpreadsheetApp.getActiveSpreadsheet();//声明电子表格 var sheet=ss.getSheetByName(“Sheet1”); 变量标题=值[0][0];//[Title]单元格A1 var URL=值[0][1];//[URL]单元格B1 var i; var logContent=''; 对于(i=3;i 以下是成功执行的Stackdriver日志(成功意味着没有错误,但仍然没有发送电子邮件):

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

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

发送或接收电子邮件的减少是否与我有很多工作表,并且此功能正在循环使用有关?

回答: 您需要取消对
MailApp
代码的注释

代码更改: 我测试了你的代码,它对我来说似乎没有问题,包括收到电子邮件,只是需要删除你的
MailApp
呼叫周围的代码注释(
/*
*/

我还建议在事件
中发送电子邮件之前添加一个条件行。getDataRange()
获取看似空的行:

if (Email == "") {
  continue;
};
MailApp.sendEmail({
  to: Email,
  subject: Name + Title + 'Test',
  message: 'This is a test message for the training that can be found at ' + URL});
我希望这对你有帮助

参考资料:
函数sendmailloop(){
变量惊叹号=['Summary'];
var ss=SpreadsheetApp.getActive();
var sheets=ss.getSheets();
表.forEach(功能(表){
如果(惊叹.indexOf(sheet.getName())=-1){
var range=sheet.getDataRange();
var values=range.getDisplayValues();
var lastRow=range.getLastRow();
var Title=值[0][0];
var URL=值[0][1];
var logContent='';

对于(var i=3;我只是注意到您可能已经意识到了-小心,就像您所做的那样(M-1)*(N-3)每次运行的发送量(其中M是#张数,N是#行数),它可能会很快失控。是的-谢谢您的格式修复和配额说明。我的用例应该很好地符合配额-不过请注意。只是一条信息(虽然在文档中相对模糊)以保持跟踪(虽然配额通常对于一般用例来说是足够的)。顺便说一句,另一个旁注(关于代码样式)-如果可能,请不要使用句子大小写的var名称(通常它们指定“类”[因为JS有它们])-此处不相关,但可能会在游戏后期引起混乱非常有用-我又犯了一个愚蠢的错误。现在在这个脚本中一切正常。我感谢你的帮助!@KMB他们为什么评论,是谁评论的?
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});
        */
      }
    }
  });
}