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

#javascript #google-apps-script #google-sheets

#javascript #google-приложения-скрипт #google-таблицы

Вопрос:

У меня есть следующий тестовый код для возврата значений из 2 диапазонов:

 function myFunction() {
  var sh = SpreadsheetApp.getActiveSpreadsheet();
  var ss = sh.getActiveSheet();

  var rangeList = ss.getRangeList(["A1:A5","C4:C8"]).getRanges();
  var result = [];

  for (var range in rangeList){
    rangeList[range].getValues().map(function(e){result.push(e);});
  }

  result = result.map(function(e){return e[0];});\flatten array

}
  

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

Спасибо

Комментарии:

1. Диапазоны не всегда будут представлять собой один столбец. Значения всегда возвращаются в виде массива по главному измерению, состоящего из массивов по младшему измерению. Таким образом, для вызовов службы электронных таблиц каждый элемент представляет собой строку. Каждый элемент этого элемента является значением столбца. В общем случае скрипты абсолютно по-разному обрабатывают значения из разных строк и столбцов, поэтому ожидается, что если вы хотите обрабатывать их одинаково, вам придется сделать немного больше.

Ответ №1:

Может быть, вы можете поместить элемент с индексом 0 в первом цикле?

 for (var range in rangeList){
  rangeList[range].getValues().forEach(function(e){ result.push(e[0]); });
}