Получить столбец Google Sheets по имени заголовка - PullRequest
0 голосов
/ 15 апреля 2019

Есть ли способ динамического извлечения столбца по его имени (заголовку)?

Вместо:

var values = sheet.getRange("A:A").getValues();

Что-то вроде: (просто для простоты)

var values = sheet.getRange(sheet.column.getHeader("name").getValues();

Помните, что Google Apps Script примерно соответствует ES3.

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

Вы можете написать один;)

function getColValuesByName(sheet, name) {
  var index = sheet.getRange(1,1,1,sheet.getLastColumn()).getValues()[0].indexOf(name);
  index++;
  return sheet.getRange(1,index,sheet.getLastRow(),1).getValues();
}
0 голосов
/ 15 апреля 2019

Хотя прямого пути не существует, есть множество способов получить то, что вы хотите, с небольшой настройкой:

  • Получить все данные и отфильтровать их (без настройки):
var values = sheet.getDataRange().getValues();
var headers = values.splice(0,1);
headerIdx = headers[0].indexOf("name");
values = values.map(function(row){return [row[headerIdx]];})
  • Установлены именованные диапазоны:

Если у вас есть именованные диапазоны, связанные с этим столбцом,

spreadsheet.getRangeByName('Sheet Name!name').getValues();//where 'name' is a named range
  • Настройка метаданных разработчика:

Если с этим столбцом связаны метаданные разработчика,

SpreadsheetApp.getActive()
    .createDeveloperMetadataFinder()
    .withKey(/*METADATA_KEY_ASSOCIATED_WITH_COLUMN*/)
    .find()[0]
    .getLocation()
    .getColumn()
    .getValues();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...