仅通过最后一个电子表格行运行Google脚本?

时间:2015-02-12 17:18:05

标签: javascript for-loop google-apps-script google-sheets

我正在运行一个可以正常运行的电子邮件脚本,但我只希望它在数据中运行最后一行。如果没有明显的数据,我不需要它或者希望它运行。我如何在下面的示例脚本中反映出来?

例如,假设我的工作表中只有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);
   }
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您可以使用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);
  }

}