Перебирайте строки, которые имеют и не имеют данных - PullRequest
0 голосов
/ 01 июля 2019

У меня есть лист (1), который будет искать строки на другом листе (2), которые содержат данные. если строки в листе (2) содержат данные, то их информация будет заполнена в листе (1). Мне нужен цикл, чтобы пройти и выполнить действия со строками в Листе (1), и иметь возможность пропустить ряд пустых строк, чтобы перейти к следующему набору информации.

У меня есть цикл, который будет проходить до последней строки данных, но он проходит через все строки с информацией, пока не будет пустой строки. Мне нужно что-то, что будет проходить через пустые строки, чтобы продолжить поиск строк с данными.

function sendEmails() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var lastRow = sheet.getLastRow(); // Number of rows to process
// Fetch the range of cells A2:B2
var dataRange = sheet.getRange(2, 1, lastRow-1, 6);
// Fetch values for each row in the Range.
var dataRangee = sheet.getRange("D2");
var qdate = dataRangee.getDisplayValues(); 
var dataRangeee = sheet.getRange("E2");
var ddate = dataRangeee.getDisplayValues();
var data = dataRange.getValues();
for (i in data) {
var row = data[i];
var emailAddress = row[2]; // Third column
var subject = 'Request';
var body = "Dear general partner,"
var file = DriveApp.getFileById('xxxxx');
var copy = row[5]; // Sixth column
GmailApp.sendEmail(emailAddress, subject, body, {cc: copy, attachments: 
[file]});
} 
}

Этот код, упомянутый выше, циклически повторяется, пока не достигнет пустой строки.

1 Ответ

0 голосов
/ 01 июля 2019

Попробуйте это:

function sendEmails() {
  var sh=SpreadsheetApp.getActiveSheet();
  var data=sh.getRange(2,1,sh.getLastRow()-1,6).getValues();
  //var qdate=sh.getRange("D2").getDisplayValue(); //not used
  //var ddate=sh.getRange("E2").getDisplayValue(); //not used
  var file = DriveApp.getFileById('xxxxx');
  var subject = 'Request';
  var body = "Dear general partner," 
  for (var i=0;i<data.length;i++) {
    if(data[i][2] && data[i][5]) {//if email or copy are undefined just skip
      var emailAddress = data[i][2]; // Third column
      var copy = data[i][5]; // Sixth column
      GmailApp.sendEmail(emailAddress, subject, body, {cc: copy, attachments:[file]});
    }
  } 
}

Вы должны зарезервировать использование этого вида цикла для объектов ключ / значение for (i in data) {, и вы всегда должны объявлять i with var i=

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...