У спрашивающего есть проблема с этой строкой кода
var range5 = SpreadsheetApp.getActiveSheet().getRange(range1:range3);
Эта строка кода сработала бы:
var range5 = SpreadsheetApp.getActiveSheet().getRange(range1+":"+range3);
ОсновнойЗдесь дело в том, как переменные добавляются / присваиваются команде, и как добавляется разделитель между переменными.
Существует как минимум четыре варианта для getRange
, но самым основным является "getRange"('адрес ячейки / диапазона') ".Как показано выше, возможно объединить переменные и разделитель для создания допустимого диапазона.
Но есть , есть другие варианты.В этом сценарии наиболее очевидным является getRange(row, column, numRows, numColumns)
.Это предполагает целочисленные параметры, но getRow
и getColumn
могут использоваться для разбиения каждой строки.
Приведенный ниже код является примером управления диапазонами как строками.
Каждая строка используется отдельнодля создания параметров определенного диапазона.
Шаг # 1 - строка для range1 используется в getRange
.Это позволяет ...
Шаг # 2 и # 3 - получить целые числа строки и столбца для диапазона.
Шаг # 4 - повторить для range3
Шаг # 5 - Теперь мы можем получить range5 с помощью "getRange"(строка, столбец, количество строк, количество столбцов) ".Значения для этого поставляются / рассчитываются по шагам с 1-го по 4-й.
function so_52759685() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var range1 = "C590";
var rangeone = sheet.getRange(range1);
var rangeonerow = rangeone.getRow();
var rangeonecolumn = rangeone.getColumn();
Logger.log("RANGE1: " + range1 + " - row = " + rangeonerow + ", and the column number = " + rangeonecolumn); // DEBUG
var range3 = "O594";
var rangethree = sheet.getRange(range3);
var rangethreerow = rangethree.getRow();
var rangethreecolumn = rangethree.getColumn();
Logger.log("RANGE3: " + range3 + " - row = " + rangethreerow + ", and the column number is " + rangethreecolumn); //DEBUG
var range5 = sheet.getRange(rangeonerow, rangeonecolumn, rangethreerow - rangeonerow + 1, rangethreecolumn - rangeonecolumn + 1)
var range5Rows = range5.getNumRows();
var range5Columns = range5.getNumColumns();
Logger.log("RANGE5: " + range5.getA1Notation() + " - Number of rows = " + range5Rows + ", and number of columns" + range5Columns);
}
В качестве альтернативы можно использовать именованный диапазон .
Тот же процесс применяется толькочто:
1 - диапазон1 и диапазон3 - это именованные диапазоны, присвоенные C590 и O594 соответственно.
2 - вместо объявления строковых литералов мы используем GetNamedRange
.
function so_5275968502() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var rangeone = ss.getRangeByName("range1");
Logger.log("range one is " + ss.getRangeByName("range1").getA1Notation()); //DEBUG
var rangeonerow = rangeone.getRow();
var rangeonecolumn = rangeone.getColumn();
Logger.log("RANGE1: " + rangeone.getA1Notation() + " - row = " + rangeonerow + ", and the column number = " + rangeonecolumn); //DEBUG
var rangethree = ss.getRangeByName("range3");
Logger.log("range three is " + ss.getRangeByName("range3").getA1Notation()); //DEBUG
var rangethreerow = rangethree.getRow();
var rangethreecolumn = rangethree.getColumn();
Logger.log("RANGE3: " + rangethree.getA1Notation() + " - row = " + rangethreerow + ", and the column number is " + rangethreecolumn); //DEBUG
var range5 = sheet.getRange(rangeonerow, rangeonecolumn, rangethreerow - rangeonerow + 1, rangethreecolumn - rangeonecolumn + 1)
var range5Rows = range5.getNumRows();
var range5Columns = range5.getNumColumns();
Logger.log("RANGE5: " + range5.getA1Notation() + " - Number of rows = " + range5Rows + ", and number of columns" + range5Columns); //DEBUG
}