Последняя строка в столбце Z в activeSheet
function getColumnHeight(col,sh,ss){
var ss=ss || SpreadsheetApp.getActive();
var sh=sh || ss.getActiveSheet();
//var col=col || sh.getActiveCell().getColumn();
var col = col || 26;
var rg=sh.getRange(1,col,sh.getLastRow(),1);
var vA=rg.getValues();
while(vA[vA.length-1][0].length==0){
vA.splice(vA.length-1,1);
}
return vA.length;
}
Пример того, как использовать это:
function csArchive() {
var ss = SpreadsheetApp.getActive();
var sh = ss.getActiveSheet();
var origin = sh.getRange('sheet1!D17');
origin.copyTo(sh.getRange(getColumnHeight(26)+1,26), {contentsOnly: true});
//origin.copyTo(sh.getRange(getColumnHeight()+1,26), {contentsOnly: true});//You can also do it this way since I defaulted col parameter to 26
}
Вы говорите, что у вас есть что-то вроде этого:
Предполагая, что вы не позволите этому диапазону заполниться:
function getNextEmptyCell(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Sheet1');
var rg=sh.getRange(1,26,54,1);
var vA=rg.getValues();
while(vA[vA.length-1][0].length==0){
vA.splice(vA.length-1,1);
}
return vA.length + 1;
}
function csArchive() {
var ss = SpreadsheetApp.getActive();
var sh = ss.getActiveSheet();
var origin = sh.getRange('sheet1!D17');
origin.copyTo(sh.getRange(getNextEmptyCell(),26), {contentsOnly: true});
}