将单元格复制并粘贴到特定列google表格中的第一个空行

时间:2020-05-28 20:11:07

标签: google-apps-script google-sheets

我正在尝试将单元格J3的值从“活动报告”复制并粘贴到L列中的第一个空单元格。

要复制的单元格是固定的,但是要粘贴的单元格是可变的。

到目前为止,我正在使用的代码只能将值从J3复制到L列的最后一行,而不是从顶部复制第一行。操纵目的地的任何尝试均未成功。我能够将其粘贴在顶部,但是它一直覆盖相同的单元格。

   function copyData() {
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var sName = ss.getSheetName();

if (sName == 'Activity Report'){
  var source = ss.getRange("Activity Report!J3");
  var destSheet = ss.getSheetByName("Activity Report");
  var lastRow = destSheet.getLastRow();

  var destination = destSheet.getRange("L"+lastRow);
  destination.activate();
  source.copyTo(destination, SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  };
}

谢谢!

1 个答案:

答案 0 :(得分:1)

将数据复制到Columnn L中的第一个空单元格

将值从J3复制到L列底部

function copyData() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Activity Report');
  sh.getRange(sh.getLastRow()+1,12).setValue(sh.getRange(3,10).getValue());
}

尝试一下:

这将把它放到L列的第一个空单元格中,如果没有空白,它可以是lastRow()+ 1。

function runOne() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Activity Report');
  var f=false;
  var L=sh.getRange(1,12,sh.getLastRow()+1,1).getValues().map(function(r,i){if(!f && r[0].toString().length==0){f=true;return i+1;}else{return '';}}).filter(function(e){return e;});
  sh.getRange(L,12).setValue(sh.getRange(3,10).getValue());
}

这使用减少:

如果没有别的,那就更简单了。

function copyData() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Activity Report');
  var f=false;
  var L=sh.getRange(1,12,sh.getLastRow()+1,1).getValues().reduce(function(a,r,i){if(!f && r[0].toString().length==0){f=true;return a + i;}return a;},1);
  sh.getRange(L,12).setValue(sh.getRange(3,10).getValue());
}

Array.map

Array.filter

Array.reduce