J'ai un problème similaire. En ce moment, c'est un tableau avec des centaines de lignes, et je m'attends à ce qu'il atteigne des milliers de lignes. (Je n'ai pas encore vérifié si une feuille de calcul Google gérera des dizaines de milliers de lignes, mais j'y arriverai finalement.)
Voici ce que je fais.
- Faire avancer à travers la colonne par centaines, s'arrêter lorsqu'on est sur une rangée vide.
- Reculer à travers la colonne par dizaines, en recherchant la première rangée non vide.
- Avancer à travers la colonne par unités, en recherchant la première rangée vide.
- Renvoyer le résultat.
Cela dépend bien sûr d'avoir un contenu contigu. On ne peut pas avoir de lignes vides aléatoires. Ou du moins, si vous en avez, les résultats seront sous-optimaux. Et vous pouvez ajuster les incréments si vous pensez que c'est important. Ceux-ci fonctionnent pour moi, et je trouve que la différence de durée entre des étapes de 50 et des étapes de 100 est négligeable.
function lastValueRow() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var r = ss.getRange('A1:A');
// Faire avancer par centaines
for (var i = 0; r.getCell(i,1).getValue() > 1; i += 100) { }
// Reculer par dizaines
for ( ; r.getCell(i,1).getValue() > 1; i -= 10) { }
// Faire avancer par unités
for ( ; r.getCell(i,1).getValue() == 0; i--) { }
return i;
}
C'est beaucoup plus rapide que d'inspecter chaque cellule depuis le haut. Et si vous avez d'autres colonnes qui prolongent votre feuille de calcul, cela peut être plus rapide que d'inspecter chaque cellule depuis le bas, aussi.