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

Google Sheets脚本调用getLastRow动态获取行数批量发邮件求助

解决方案

你只需要通过getLastRow()获取工作表最后一行有内容的行号,即可动态计算需要处理的有效行数,同时原代码存在读取范围列数不匹配的问题也需要同步修正,否则无法正常读取邮件内容列。
修改后的完整代码如下:

/**
 * Sends emails with data from the current spreadsheet.
 */
function sendEmails() {
  var ss = SpreadsheetApp.openById("ID");
  var current = ss.getSheetByName("Sheet");
  var startRow = 4; // First row of data to process
  // 动态计算有效行数:最后一行内容行号减去起始行号+1
  var lastRow = current.getLastRow();
  var numRows = lastRow - startRow + 1;
  // 无有效数据时直接退出,避免报错
  if (numRows < 1) return;
  // 修正范围列数为2,匹配需要读取的邮箱、邮件内容两列
  var dataRange = current.getRange(startRow, 1, numRows, 2);
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  for (i in data) {
    var row = data[i];
    var emailAddress = row[0]; // First column
    var message = row[1]; // Second column
    var subject = 'Stock values end of month';
    MailApp.sendEmail(emailAddress, subject, message);
  }
}

核心修改点

  • 调用current.getLastRow()获取当前工作表最后一个包含内容的行号,动态计算需要处理的行数,无需手动修改
  • 修正getRange的最后一个参数为2,原参数1仅读取A列,无法获取B列的邮件内容,会导致发送邮件失败
  • 新增无有效数据的判断逻辑,当工作表没有待处理内容时直接终止运行,避免抛出异常

内容的提问来源于stack exchange,提问作者Support Bot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:24:01