#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]); });
}