ошибаюсь?
Представьте, что у вас есть справочники разной длинны, но на одном листе и вот вы их переодически обновляете. По щелчку нельзя получить длинну каждого столбца, поэтому нужен цикл, чтобы определить индекс последнего значения.
Вот!!! Пазл сложился. В моей системе координат, разные справочники, обязаны быть на разных листах. Это разные сущности, и они не должны быть в одной таблице.
Ну, Таблицы часто используют как интерфейс.
Классическая ошибка архитектуры данных. Телефонный справочник - одна таблица name, phone Потом ломают голову, как сохранить данные для ситуации когда у контакта несколько номеров - дублируют записи. А причина в том, что Имя контакта и телефонный номер это разные сущности. Для таблиц это нормально, для базы данных катастрофа.
Вспомнил, зачем может пригодиться определять последнюю строку с данными. Представим - есть лист с формулами, в который мы вставляем данные из других листов. Используем getlastrow - возвращается индекс последней строки, но это может быть строка и с формулой, которую протянули "про запас". Поэтому getlastrow не работает и нам нужно ориентироваться на столбцы с данными, чтобы гарантированно определить индекс последней строки и чтобы после него вставить новые данные корректно.
Или же противная штука - чек-бокс. Тоже обманывает гетласт роу
также если у тебя на листе списки Справочники где столбец это один независимый список
👍 И возможно еще выпадающий список, но надо проверять.
/** * @function lastRow() * @description Ищет последнюю заполненную строку в выбранном столбце * @param {object} sh ссылка на лист * @param {String} col столбец для поиска, пример: "A" */ function lastRow(sh, col) { var values = sh.getRange(col + ":" + col).getValues(); var lr; for (var i = values.length - 1; i >= 0; i--) { if (values[i][0]) { lr = i + 1; break; } } return lr; }
* @param {SpreadsheetApp.Sheet} sh ссылка на лист
Обсуждают сегодня