通过了解JavaScript和类似GAS的变体来缓慢地工作,但是完全是新手。
我有一个脚本,该脚本在执行时将公式复制为值,然后将其粘贴到另一个单元格中。一种存档功能。
function csArchive() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var origin = ss.getRange('sheet1!D17');
origin.copyTo(ss.getRange('sheet1!Z2'), {contentsOnly: true});
换句话说,脚本执行以下操作: 1.从活动工作表中复制并指定范围。 2.粘贴到指定的范围(z2)。 那里缺少的是-检查z2是否为空,如果不是,请向下查找直到找到一个空单元格,然后粘贴该值。
我相信我的救赎与.getLastRow()
息息相关,但对于我的一生,我无法使其正常运转。
预先谢谢你!
答案 0 :(得分:0)
activeSheet中Z列的最后一行
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});
}