谷歌表格+应用程序脚本,从一张表格复制/粘贴到另一张表格,但粘贴到特定列(B)的第一个空单元格中


  • 我正在尝试编写一个脚本,将数据从一个工作表上的一个区域复制到B列的第一个空单元格中的另一个区域。所以,我需要一种方法跳过a列,粘贴到B列的第一个空单元格中。希望这有意义。

  • 另一部分是B列有时会有空单元格。所以它需要跳过这些来获得最后一个空单元格。

  • 我找到了一个教程来获取最后一个空单元格,并使其正常工作,但不知道如何将其合并到粘贴数据的函数中。以下是我目前所拥有的:

function myFunction() {
var sss = SpreadsheetApp.openById('1dp5s8G9vFF5LzF5mAaY-JoySLGekh5UKHwt6jFcGOnA');
var ss = sss.getSheetByName('Form'); 
var range = ss.getRange('A8:H');
var data = range.getValues();

var tss = SpreadsheetApp.openById('1Vq_xX9cbC6OBAh1IRKsVKSPQvc5FEUFsJ2mlPzuFZ6o');
var ts = tss.getSheetByName('Data');
var columnToCheck = ts.getRange("B:B").getValues();
var lastRow = getLastRowSpecial(columnToCheck);


Logger.log(lastRow)
};

function getLastRowSpecial(range){
var rowNum = 0;
var blank = false;
for(var row = 0; row < range.length; row++){

if(range[row][0] === "" && !blank){
rowNum = row;
blank = true;
}else if(range[row][0] !== ""){
blank = false;
};
};
return rowNum;
};

  • 所以基本上我需要一个函数,它将在由";lastRow";

  • 或者,如果有人对如何以不同的方式实现这一目标有建议,我很乐意听到

说明:

  • 你很亲密。getLastRowSpecial函数确实得到了列B的最后一行,并且它考虑了空白单元格。

  • 然后,您的目标是使用返回值lastRow,并使用setValues从lastRow+1开始设置数据。

    ts.getRange(lastRow+1,2,data.length,data[0].length).setValues(data);
    
  • 我在你的脚本中做的另一个修改是,我没有采用完整的data范围,只得到最后一行内容。如果这对您不起作用,那么跳过该部分并使用您的解决方案。这是我修改的部分:

    var range = ss.getRange('A8:H'+ss.getLastRow());
    

解决方案:

我只修改了myFunction:

function myFunction() {
var sss = SpreadsheetApp.openById('1dp5s8G9vFF5LzF5mAaY-JoySLGekh5UKHwt6jFcGOnA');

var ss = sss.getSheetByName('Form'); 
var range = ss.getRange('A8:H'+ss.getLastRow()); // new code
var data = range.getValues();

var tss = SpreadsheetApp.openById('1Vq_xX9cbC6OBAh1IRKsVKSPQvc5FEUFsJ2mlPzuFZ6o');
var ts = tss.getSheetByName('Data');
var columnToCheck = ts.getRange("B:B").getValues();
var lastRow = getLastRowSpecial(columnToCheck);

ts.getRange(lastRow+1,2,data.length,data[0].length).setValues(data); // new code
};

function getLastRowSpecial(range){
var rowNum = 0;
var blank = false;
for(var row = 0; row < range.length; row++){

if(range[row][0] === "" && !blank){
rowNum = row;
blank = true;
}else if(range[row][0] !== ""){
blank = false;
};
};
return rowNum;
};

相关内容

最新更新