Google apps script 如何将列复制到另一列的第一个空白单元格?
我在A列中有一些值,我想复制B列的第一个空单元格 我设法找到了问题的第一部分:Google apps script 如何将列复制到另一列的第一个空白单元格?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我在A列中有一些值,我想复制B列的第一个空单元格 我设法找到了问题的第一部分: function CopyValues() { var ss = SpreadsheetApp.getActiveSpreadsheet (); var source = ss.getRange ("MySheet!A4:A10"); source.copyTo (ss.getRange ("MySheet!B32"), {contentsOnly: true}); } 其中B32是B列中的第一个空
function CopyValues() {
var ss = SpreadsheetApp.getActiveSpreadsheet ();
var source = ss.getRange ("MySheet!A4:A10");
source.copyTo (ss.getRange ("MySheet!B32"), {contentsOnly: true});
}
其中B32是B列中的第一个空单元格
这工作得很完美,但当然B32并不总是第一个空单元,我需要动态获取第一个空单元。我尝试了一些事情,通过合并在线找到的其他脚本,但到目前为止没有成功
任何帮助都将不胜感激!
谢谢大家! 试试这个:
function getColumnHeight(col,sh,ss){
var ss=ss || SpreadsheetApp.getActive();
var sh=sh || ss.getActiveSheet();
var col=col || sh.getActiveCell().getColumn();
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;
}
getColumnHeight()+1是您想要的
另一个版本:
function getColumnHeight(col,sh,ss){
var ss=ss||SpreadsheetApp.getActive();
var sh=sh||ss.getActiveSheet();
var col=col||sh.getActiveCell().getColumn();
const rcA=sh.getRange(1,col,sh.getLastRow(),1).getValues().reverse()
let s=0;
for(let i=0;i<rcA.length;i++) {
if(rcA[i][0].toString().length==0) {
s++;
}else{
break;
}
}
return rcA.length-s;
}
函数getColumnHeight(col、sh、ss){
var ss=ss | | SpreadsheetApp.getActive();
var sh=sh | | ss.getActiveSheet();
var col=col | | sh.getActiveCell().getColumn();
const rcA=sh.getRange(1,col,sh.getLastRow(),1).getValues().reverse()
设s=0;
对于(设i=0;i这里有一个函数,它将返回给定列和表中的第一个空单元格(如字符串“B32”):
function getFirstEmptyCellInCol(sheet, column) {
var values = sheet.getRange(column + ':' + column).getValues(); // get all the data of the column
var rowCount = 0;
while ( values[rowCount] && values[rowCount][0] != "" ) {
rowCount++;
}
return column + parseInt(rowCount+1).toString();
}
你可以这样称呼它:
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("MySheet");
emptyCell = getFirstEmptyCellInCol(sheet,'B');
使用您的代码:
function CopyValues() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("MySheet");
var emptyCell = getFirstEmptyCellInCol(sheet,'B');
var source = sheet.getRange ("A4:A10");
source.copyTo (sheet.getRange(emptyCell), {contentsOnly: true});
}
非常感谢!工作非常完美:)祝你有个愉快的一天!KEV请考虑把我的答案标记为“接受”(左边的检查标记),如果它对你有用的话。