Не получается полный диапазон данных с использованием .getSelection.getActiveRangeList (). GetRanges () - PullRequest
1 голос
/ 26 марта 2020

Я ходил с этим часами и собирался вырвать свои волосы.

У меня есть основная электронная таблица, из которой я извлекаю данные, копирую их и вставляю в другой лист. Это делается на основе того, какие строки выбирает пользователь. Выбор отдельных строк работает должным образом, несколько строк (если смежные) также работает. Теперь я запускаю другой блок if, чтобы учесть несколько выбранных строк, которые НЕ смежны, используя этот кодовый блок:

    var myRange = mySelection.getActiveRangeList().getRanges();
    Browser.msgBox(myRange.length)
    for ( var i = 0; i < myRange.length; i++) {
        var reserveData = myRange[i].getValues();
        Browser.msgBox(reserveData[i]);
    }

Допустим, пользователь выбирает 4 строки для копирования. Первый MsgBox покажет длину 4. Отлично! Однако MsgBox в пределах для l oop будет отображать данные только для первой итерации l oop. 2-й, 3-й и 4-й MsgBox не содержат данных.

1 Ответ

1 голос
/ 27 марта 2020

Проблема:

getValues() возвращает двумерный массив. Но i меняет каждую итерацию. Изменение в i не имеет отношения к индексации извлеченного двумерного массива. Например, во второй итерации i равно 1, но второй диапазон (и, следовательно, второй reserveData) может не содержать 2 строки (строка 0 и строка1), поэтому reserveData[i] будет undefined.

Решение:

Использование

Browser.msgBox(reserveData);//[i] removed
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...