Size: a a a

Чат | Google Таблицы и скрипты

2020 March 16

SM

Stanislav Maslakov in Чат | Google Таблицы и скрипты
Максим Стоянов
Лучше уже .some вместо .filter
лучше не допускать таких строк если мы работаем с данными они должны идти один за другим, вы ж потом не сможете вытянуть нужное, на пример если будет отсутствовать одна дата, или на крайний случай выбирать столбец где данные есть всегда, например с ID
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Stanislav Maslakov
лучше не допускать таких строк если мы работаем с данными они должны идти один за другим, вы ж потом не сможете вытянуть нужное, на пример если будет отсутствовать одна дата, или на крайний случай выбирать столбец где данные есть всегда, например с ID
Стас, давай не публиковать такого, пжл?
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Выше пример как нормально определять последнюю строку, каким бы разреженным диапазон не был
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
посл строка определяется в цикле, каким-то таким кодом, если ты делаешь что-то другое, то не надо делать что-то другое, а потом оправдывать это тем, что данные не должны быть с пустыми ячейками внутри
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
@IronMan74

Сниппет для определения последней заполненной строки
function getLastRowForAdmin(sheet, column){
 var data = sheet.getDataRange().getValues();
 var lr = 0;
 data.forEach(function(x, index){
   if(x[column-1] != ''){
     lr = index;}
 })
 return lr + 1
}
источник

SM

Stanislav Maslakov in Чат | Google Таблицы и скрипты
Eugeny Namokonov
Стас, давай не публиковать такого, пжл?
ок, я предложил альтернативу, как я делаю. Понял, больше не буду писать.
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Stanislav Maslakov
ок, я предложил альтернативу, как я делаю. Понял, больше не буду писать.
Стоит писать вещи, в которых ты уверен
источник

SM

Stanislav Maslakov in Чат | Google Таблицы и скрипты
Eugeny Namokonov
Стоит писать вещи, в которых ты уверен
я так и делаю))
источник

МС

Максим Стоянов... in Чат | Google Таблицы и скрипты
Eugeny Namokonov
@IronMan74

Сниппет для определения последней заполненной строки
function getLastRowForAdmin(sheet, column){
 var data = sheet.getDataRange().getValues();
 var lr = 0;
 data.forEach(function(x, index){
   if(x[column-1] != ''){
     lr = index;}
 })
 return lr + 1
}
Это не эффективно, если у вас в таблице милион строк, но заполнены первые 10, то вы всеравно будете перебирать весь милион
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Максим Стоянов
Это не эффективно, если у вас в таблице милион строк, но заполнены первые 10, то вы всеравно будете перебирать весь милион
Альтернативы нет, кроме того, что данные ты можешь взять по шит апи и также перебрать
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Максим Стоянов
Это не эффективно, если у вас в таблице милион строк, но заполнены первые 10, то вы всеравно будете перебирать весь милион
Вот тебе нужно определить посл заполненную ячейку в столцбе А, что ты будешь делать?
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Жду кода )
источник

МС

Максим Стоянов... in Чат | Google Таблицы и скрипты
Как-то так

function getLastRow (sheet, col) {
 
const data = sheet.getRange(1, col, sheet.getLastRow(), 1).getValues();
   
 
let last_row = null;

 data
.reverse().some(function(item, i){
   if
( item[0] == '' ) return;
        last_row = data.length - i;
        return true;
 })
;

 return l
ast_row;
}
источник

МС

Максим Стоянов... in Чат | Google Таблицы и скрипты
Код не тестил может быть опечатка
источник

IB

Igor Borisevich in Чат | Google Таблицы и скрипты
Перебор с конца тоже не всегда оптимален. Если getLastRow вернёт миллион, а а нужном столбце будет 5 значений, мы переберём 999995 значений
источник

МС

Максим Стоянов... in Чат | Google Таблицы и скрипты
Igor Borisevich
Перебор с конца тоже не всегда оптимален. Если getLastRow вернёт миллион, а а нужном столбце будет 5 значений, мы переберём 999995 значений
999995 это не 1000000 уахах )
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Ладно, это примерно тоже самое
источник

МС

Максим Стоянов... in Чат | Google Таблицы и скрипты
А вообще в идеале, нужно сначала узнать сколько строк и брать половину и смотреть на последнюю строку, потом следующую половину, это в разы ускорит работу
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Самая дорогая операция здесь - как раз читать диапазон из таблицы, все остальное (перебор ячеек внутри гас) практически ничего не стоит.
источник

МС

Максим Стоянов... in Чат | Google Таблицы и скрипты
Eugeny Namokonov
Самая дорогая операция здесь - как раз читать диапазон из таблицы, все остальное (перебор ячеек внутри гас) практически ничего не стоит.
С этим я согласен
источник