Выбор диапазона из сценария Google листов с именованным диапазоном - PullRequest
0 голосов
/ 05 ноября 2018

Есть ли способ выбрать диапазон, указанный в другом именованном диапазоне?

Например, если у меня есть именованный диапазон, скажите «firstRange», и я хочу получить только 2-й столбец из этого диапазона для копирования в другой именованный диапазон.

Я могу сделать это, копируя ячейки по отдельности с помощью цикла for, но это занимает много времени.

К сожалению, getRangeByName ("firstRange"). getRange (1,1,2) недопустим, поскольку getRange не является методом getRangeByName

Спасибо

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Как насчет этого метода? Я думаю, что есть несколько ответов для вашей ситуации. Поэтому, пожалуйста, подумайте об этом как об одном из них. Поток выглядит следующим образом.

Поток:

  • Диапазон значений, которые вы хотите получить из исходного именованного диапазона с помощью offset().
    • Когда getLastRow() используется для именованного диапазона, возвращаемое значение является последней строкой именованного диапазона.
  • Извлечение целевого диапазона имен.
  • Скопировать полученный исходный диапазон в целевой диапазон.

Пример сценария:

В этом примере скрипта второй столбец именованного диапазона firstRange копируется в именованный диапазон secondRange.

var ss = SpreadsheetApp.getActiveSpreadsheet();

// Retrieve source range.
var sourceRange = ss.getRangeByName("firstRange");
var src = sourceRange.offset(0, 1, sourceRange.getLastRow(), 1);

// Retrieve destination range.
var destinationRange = ss.getRangeByName("secondRange");

// Copy from source range to destination range.
src.copyTo(destinationRange);

Например, если вы хотите скопировать найденный исходный диапазон во 2-й столбец целевого диапазона, измените var destinationRange = ss.getRangeByName("secondRange") следующим образом.

var destinationRange = ss.getRangeByName("secondRange").offset(0, 1, 1, 1);

Ссылки:

Если это не то, что вы хотите, извините.

0 голосов
/ 05 ноября 2018

Вы можете получить именованный диапазон, а затем получить значения, которые возвращают многомерный массив. Затем вы можете разобрать значения, которые вы ищете из этого. Например

var parsed = SpreadsheetApp.getActiveSpreadsheet()
    .getRangeByName('namedRange')
    .getValues()
    .map(function(row) {
      return [row[1]];
    });

Получает все значения из вашего именованного диапазона, затем сопоставляет их и извлекает значения из второго столбца (индекс 1 в этом примере)

Надеюсь, это поможет.

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