用于在下一个空单元格中输入数据的脚本

时间:2019-03-15 22:16:27

标签: google-apps-script google-sheets

通过了解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()息息相关,但对于我的一生,我无法使其正常运转。 预先谢谢你!

1 个答案:

答案 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
}

您是说您有这样的事情吗?

enter image description here

假设您不会让该范围填满:

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});
}