循环浏览不同数量的行

时间:2019-06-25 15:03:02

标签: google-apps-script

我有一个当前可以运行的脚本,但是它仅适用于我必须输入的x数量的行。

我希望此脚本更具动态性,并且能够遍历我拥有的许多列。我的工作表有4列数据,这些数据已合并到发送电子邮件中。

电子邮件列表,因此行数将定期更改。我希望代码能够遍历每一行,直到遇到空白为止,而不是重置应该循环遍历的行数。

我不确定该怎么做,但我认为这可能与确定数据范围时使用++有关。

function sendEmails() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 3; // Number of rows to process
// Fetch the range of cells A2:B2
var dataRange = sheet.getRange(startRow, 1, numRows, 4);
// Fetch values for each row in the Range.
var dataRangee = sheet.getRange("D2");
var date = dataRangee.getDisplayValues(); 
var data = dataRange.getValues();
for (i in data) {
var row = data[i];
var emailAddress = row[0]; // First column
var subject = 'ILPA Request';
var body = "Dear " + row[1] +   "\n \nIn order to comply with statutory 
requirements";
var file = DriveApp.getFileById('xxxx');
var copy = row[2]; // Third column

GmailApp.sendEmail(emailAddress, subject, body, {cc: copy, attachments: 
[file]});
}
}

这是整个代码,尽管我确实删除了主体部分。现在,我必须更改numRows的数字才能使代码在更多行中循环。希望避免使用一个具体的数字,并让代码一直运行到遇到空白行为止。

1 个答案:

答案 0 :(得分:2)

要求:

对工作表中的总行数使用变量。


解决方案:

选项1 :使用getDataRange()获取工作表中所有数据的数据范围。

var dataRange = sheet.getDataRange();

选项2 :使用getLastRow()作为行数,然后将结果传递到getRange(),以获取工作表中所有填充的行。

var lastRow = sheet.getLastRow();
var dataRange = sheet.getRange(2, 1, lastRow, 4);

注意:使用这些解决方案之一意味着您不再需要变量startRownumRows


参考文献:

  1. getDataRange()
  2. getLastRow()
  3. getRange(row, column, numRows, numColumns)