Пытаемся понять цель функции getRange - PullRequest
0 голосов
/ 10 июля 2020

Я работаю над запуском, однако из строки как - Spreadsheet.GetRange (2, 19, 15, 3) не будет go через. Сообщение, которое мешает мне запустить: «Исключение: параметры (строка, число, число, число) не соответствуют сигнатуре метода для». Еще новичок здесь. Пожалуйста, посоветуйте. Спасибо

function sendEmails2() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Refund by Bank'), true);

  // Fetch the range of cells A2:O7
  var dataRange = spreadsheet.getRange(2, 20, 15, 3);
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var emailAddress = row[19]; // 19th column
    var message = row[20]; // 21th column
    var emailSent = row[21]; // 20th column
    if (emailSent !== EMAIL_SENT) { // Prevents sending duplicates
      var subject = 'Sending emails from a Spreadsheet';
      MailApp.sendEmail(emailAddress, subject, message);
      sheet.getRange(2 + i, 3).setValue(EMAIL_SENT);
      // Make sure the cell is updated right away in case the script is interrupted
      SpreadsheetApp.flush();
    }
  }
}

https://docs.google.com/spreadsheets/d/1os7Z4vsj4lwynuepZRZnScRBiqyiKuM-gsFg-dVecYw/edit#gid = 0

Ответы [ 2 ]

0 голосов
/ 10 июля 2020

Ответ:

Ваша проблема в том, что вы используете подпись метода для getRange() класса Sheet в методе getRange() для класса Spreadsheet.

Дополнительная информация:

Оба Class Spreadsheet и Class Sheet имеют метод под названием getRange().

As согласно документации для Spreadsheet.getRange() существует только getRange(a1Notation):

getRange(a1Notation):

Возвращает диапазон, указанный в обозначении A1 или R1C1 обозначение.

А для Sheet.getRange() существует getRange(row, column, numRows, numColumns):

getRange(row, column, numRows, numColumns)

Возвращает диапазон с верхняя левая ячейка в заданных координатах с заданным количеством строк и столбцов.

Поскольку ваша переменная spreadsheet определяется следующим образом:

var spreadsheet = SpreadsheetApp.getActive();

Это фактически экземпляр класса Spreadsheet, а не Sheet. Следовательно, используемая вами нотация недопустима.

Исправление кода:

Измените определение dataRange с:

var dataRange = spreadsheet.getRange(2, 20, 15, 3);

на:

var dataRange = spreadsheet.getActiveSheet().getRange(2, 20, 5, 3);

Надеюсь, это будет вам полезно!

Ссылки:

0 голосов
/ 10 июля 2020

возвращает строки и столбцы в указанном диапазоне. первые 2 аргумента - это начальная строка и столбец, за которыми следуют 2 ограничения диапазона. Таким образом, с первыми двумя параметрами вы указываете начальную строку и столбец, а с двумя другими вы указываете, сколько строк и столбцов находится в вашем диапазоне, например:

getRange (1, A, 3, c) получает диапазон 1-4 строк и столбцы AD

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