You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Apps Script中第二个MailApp.sendEmail报错无收件人,求排查

解决MailApp.sendEmail报“no recipient”异常的问题

你的脚本中第二个MailApp.sendEmail报错的核心原因是数组元素的索引写法错误,导致无法正确获取用户邮箱地址mailPers,最终触发“无收件人”的异常。

问题代码分析

在循环中你使用了row[i,0]、row[i,10]这类语法,但JavaScript里数组元素的访问应该用row[索引值]的形式。row[i,0]这种写法实际利用了逗号运算符,最终等价于row[0],随着循环变量i递增,这种写法会导致你无法正确获取当前行对应列的数值——当i的值超过当前行数组的长度时,会直接返回undefined,这就导致mailPers为空或未定义,触发邮件发送失败。

修正后的代码

把所有错误的数组索引写法改成正确的row[列索引]形式:

function sendEmails(){
  // Recuperiamo il foglio di calcolo attivo
  var sheet = SpreadsheetApp.getActiveSheet();
  
  var emailAddress = "nomm123@gmail.it";
 
  var subject = "Documento in scadenza";

  // Definiamo la riga iniziale come la seconda riga
  var startRow = 10; 
  
  // Calcoliamo il numero di righe presenti nel foglio
  var numRows = sheet.getLastRow() - 3;
  
  // Recuperiamo la gamma di dati compresa tra la riga iniziale e il numero di righe calcolato
  var dataRange = sheet.getRange(startRow, 1, numRows, 11)
  
  // Recuperiamo i valori da quella gamma di dati
  var data = dataRange.getValues();
    
  //Iteriamo attraverso i valori per inviare l'e-mail a ciascun indirizzo presente nella colonna A
  for (var i = 0; i < data.length; ++i){
    var row = data[i];

    var nome = row[0]; // 修正索引:取当前行第1列(索引0)
    var cognome = row[1]; // 修正索引:取当前行第2列(索引1)
    var doc = row[2]; // 修正索引:取当前行第3列(索引2)
    var mailPers = row[10]; // 修正索引:取当前行第11列(索引10)
    Logger.log(mailPers);

    var scadenza = new Date(row[4]); // 修正索引:取当前行第5列(索引4)
    var alert = new Date(row[4]); // 修正索引:取当前行第5列(索引4)

    alert.setDate(alert.getDate() - 30);
    var oggi = new Date();

    if (alert <= oggi){
      var message = "Attenzione:  " + doc + "  di  " + cognome + "  " + nome + "  scade il  " + scadenza;
      var userMessage = "Attenzione: il tuo documento  " + doc + "  scadrà in data  " + scadenza;
      Logger.log(message)

      MailApp.sendEmail(emailAddress, subject, message);
      // 现在mailPers能正确获取到邮箱地址,不会再触发无收件人异常
      MailApp.sendEmail(mailPers, subject, userMessage);
    }
  }
}

补充说明

  • 第一个邮件发送正常是因为它使用的是硬编码的emailAddress,不受数组索引错误的影响;
  • 你可以查看之前的Logger.log(mailPers)输出,应该会显示undefined或空值,这也验证了邮箱地址未被正确获取。

内容的提问来源于stack exchange,提问作者Gianmarco Bertin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 06:47:03