Перебрать различное количество строк - PullRequest
0 голосов
/ 25 июня 2019

У меня есть скрипт, который в настоящее время работает, но он работает только для х количество строк, которые я должен ввести.

Я хочу, чтобы этот сценарий был более динамичным и имел возможность циклически проходить через любое количество столбцов.Мой лист содержит 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 Ответ

2 голосов
/ 25 июня 2019

Требование:

Используйте переменную для общего числа строк в листе.


Решение:

Опция 1 :Используйте getDataRange(), чтобы получить диапазон данных для всех данных на листе.

var dataRange = sheet.getDataRange();

Опция 2 : используйте getLastRow() в качестве числа строк, а затем передайте результат вgetRange(), чтобы получить все заполненные строки на листе.

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

Примечание : использование любого из этих решений означает, что вам больше не нужны переменные startRow и numRows.


Ссылки:

  1. getDataRange()
  2. getLastRow()
  3. getRange(row, column, numRows, numColumns)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...