Странный результат диапазона возврата в Google Sheets / App Scripts - PullRequest
1 голос
/ 03 августа 2020

У меня простой лист с данными и кодом:

введите описание изображения здесь

function test() {
var SpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
var Sheet = SpreadSheet.getSheets()[0];
var frozenRows = Sheet.getFrozenRows(); 2.0
var lastRow = Sheet.getLastRow(); // 3.0
var lastColumn = Sheet.getLastColumn(); // 3.0
var headerRange = Sheet.getRange(1, 1, frozenRows, 1); // A1:A2
var dataRange = Sheet.getRange(1 + frozenRows, 1, lastRow, lastColumn); // A3:C5
var Range = Sheet.getDataRange(); // A1:C3

Я не понимаю, почему я получаю возвращаемое значение A3: C5 , а не A3: C3 от:

var dataRange = Sheet.getRange(1 + frozenRows, 1, lastRow, lastColumn);

Logger.log(dataRange.getA1Notation());

Спасибо.

1 Ответ

1 голос
/ 03 августа 2020

Метод getRange () имеет синтаксис getRange(row, column, numRows, numColumns)

Таким образом, getRange(3, 1, 3, 3) приведет к диапазону, который

  • начинается в столбце 1 row 3 (A3)
  • ist 3 столбца шириной
  • и 3 строки длиной
  • Итак: A3:C:5
  • Чтобы получить диапазон A3:C3 вместо этого вам нужно запросить: getRange(3, 1, 1, 3)
  • Другими словами:
var startRow = (1 + frozenRows);
var rowLength = (lastRow - startRow + 1);
var startColumn = 1;
var columnLength = (lastColumn - startColumn + 1);
var dataRange = Sheet.getRange(startRow, startColumn, rowLength, columnLength);
...