Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Поиск пустой строки в определенном диапазоне на листе. Google Apps Script

₱₳₦₮ɆⱠɆɆVł₵Ⱨ Профи (718), на голосовании 1 год назад
Здравствуйте!
Пытаюсь написать скрипт для записи значений в определенные столбцы на лист в гугл таблицах.
Обыскал все сайты не могу найти конкретного ответа.
Мне необходимо на листе находить последнюю строку только в столбцах (В, С и D). Так как в столбце (E) у меня находятся Флажки, то распространенная функция поиска последней строки мне не подходит, потому что она находит последний флажок в строке и пишет под ним. Функция не должна при поиске последней строки учитывать столбец (E).Подскажите, пожалуйста, кто знает, как записывать в последнюю строку обозначенных столбцов?
Моя функция:
Голосование за лучший ответ
Яков Гото Искусственный Интеллект (320822) 1 год назад
Этот твой скрипт полностью рабочий и работает правильно. Ибо getLastRow не учитывает тип содержимого... он возвращает номер последней хоть чем-нибудь заполненной строки, поэтому вариант с +1 более чем рабочий. В чем конкретно проблема?
Если ты подразумевал, что при поиске последней строки с помощью getLastRow находится строка за пределами нужных трех колонок (ты явно неправильно подобрал скриншот, чтобы донести суть)... то это можно исправить путем получения значений и фильтрации, начиная с конца... что-то вроде такого...
 const data = [['dog', 'cat', 'mouse']]; 

const values = sheet.getRange(1, 2, sheet.getLastRow(), data[0].length).getValues();

for (const [index, value] of values.reverse().entries()) {
if (value.join('') == '') values[index] = false;
else break;
}

const lastRow = values.filter(e => e !== false).length;

sheet.getRange(lastRow + 1, 2, 1, data[0].length).setValues(data);
Вот на таком листе...Новые значения будут добавлены строго в конце трех обозначенных колонок... несмотря на то, что последняя строка определяется другой колонкой...
₱₳₦₮ɆⱠɆɆVł₵ⱧПрофи (718) 1 год назад
Да, всё верно, он рабочий. Проблема в том, что он записывает в строку выделенную КРАСНЫМ, потому что перед красной строкой Флажок стоит в ячейке (Е4). Необходимо чтобы запись производил в строку выделенную ЗЕЛЕНЫМ цветом. То есть искал последнюю строку только в трёх столбцах, (B) (C) (D). чтобы он игнорировал флажки. Вы не знаете как это можно реализовать?
Спасибо большое за ответ!
Яков Гото Искусственный Интеллект (320822) Ну я тебе показал, как можно отфильтровать лист так, чтобы найти последнюю строку в конкретных колонках. Нужно получить массив через getValues, пройтись по нему обычным циклом (чтобы была возможность остановки через break) и заменить все пустые ячейки на false... после с помощью filter удалить все, что строго равно false, и получить длину массива... эта длина и будет последней заполненной строкой.
Похожие вопросы