仅通过最后一行运行Google脚本

Run Google Script Through Last Spreadsheet Row Only?

本文关键字:一行 运行 Google 脚本 最后      更新时间:2023-10-13

我正在运行一个运行良好的电子邮件脚本,但我只希望它能运行到最后一行,其中包含数据。我不需要它,也不希望它在明显没有数据的情况下运行。我如何在下面的示例脚本中反映这一点?

例如,假设我的工作表中只有3行数据。我只需要为这3行运行脚本,但代码将为20行运行。要处理的条目数量每天都会有所不同,所以我不能只设置一个固定的数量。

基本上我想取代:

var numRows =20;// Number of rows to process

通过一些.getlastrow的迭代…我想?

供参考的示例脚本:

function sendEmails() {
  var sheet =SpreadsheetApp.getActiveSheet();
  var startRow =2;// First row of data to process
  var numRows =20;// Number of rows to process
  // Fetch the range of cells A2:B3
  var dataRange = sheet.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 ="Sending emails from a Spreadsheet";
    MailApp.sendEmail(emailAddress, subject, message);
   }
}

谢谢你的帮助!

您可以使用getLastRow()方法来获取工作表中最后一个填充行的索引。或者使用getDataRange().getValues,它将只获取有数据的行。

function sendEmails(){
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow =2;// First row of data to process
  var data = sheet.getDataRange().getValues();
  for(var i=startRow; i<data.length; i++){
    var row = data[i];
    var emailAddress = row[0];// First column
    var message = row[1];// Second column
    var subject ="Sending emails from a Spreadsheet";
    MailApp.sendEmail(emailAddress, subject, message);
  }
}