我正在尝试将单元格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);
};
}
谢谢!
答案 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());
}