复制并粘贴到某个列的下一个可用行Google Sheets

人气:311 发布:2022-10-16 标签: copy-paste google-apps-script google-sheets

问题描述

我正在尝试从Excel切换到Google Sheets,我已经有了用于此操作的宏,但您不能在Google电子表格上运行宏。我想要的是将Log-in!C5中的值移动到从A3列开始的另一个工作表"W1"。我的代码可以工作,但不是将它移到"W1!A3"中,而是放在单元格A146上,因为它是下一个空行。有没有办法将值移动到A列的第一个空行中?而不考虑其他列不为空?

以下是我的代码

function moveValuesOnly() {
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var source = ss.getRange('Log-in!C5');
 var destSheet = ss.getSheetByName('w1');
 var destRange = destSheet.getRange(destSheet.getLastRow()+1,1);
 source.copyTo (destRange, {contentsOnly: true});
 source.clear ();
}  

推荐答案

getLastRow()仅获取工作表的最后一行,而不获取区域。

如果您只需要w1!A3,请直接硬编码:尝试从

更改
destSheet.getRange(destSheet.getLastRow()+1,1);

destSheet.getRange(3,1);

或者,要查找区域中的第一个空单元格,

var colA = destSheet.getRange('A:A').getValues();

代码1:

//Filter 2D array to 1D
var fcolA = colA.filter(function (e) {return e[0];});
var firstEmptyRowIncolA = fcolA.indexOf('')+1;

代码2:

for(i=0;i<colA.length;i++){
if(colA[i][0] == ''){
var firstEmptyRowIncolA = i+1;
break;
}
}

135