Google App脚本:如何将数据从一张纸复制并粘贴到另一张纸?

时间:2019-07-04 10:00:40

标签: google-apps-script google-sheets appscript

我正在尝试使用Google App脚本将某些数据一个接一个地复制并粘贴到另一张纸上。关键是我的脚本没有将数据粘贴到正确的行上。我希望将第一个数据粘贴到单元格A2中。然后,当我再次运行脚本时,在单元格A3等中。但是,当我运行脚本时,它将数据粘贴到单元格A266中。

function Agregation () {
var spreadsheet = SpreadsheetApp.getActive();
var ss = spreadsheet.getSheetByName('Données');
var ts = spreadsheet.getSheetByName('Classement');
var lr = ts.getLastRow();
Logger.log(lr);
ss.getRange('A2:E7').copyTo(ts.getRange('A0'+(lr+1)), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
};

1 个答案:

答案 0 :(得分:0)

出于文档目的。

代码很好,但是“分类”工作表不是空的,因为它在'A265'处有一个非空单元格,对ts.getLastRow();的调用返回了265。清除工作表并运行代码按预期工作。

一种前进的方式是在完成复制之前先致电ts.clear(),以确保工作表为空。

更新

测试后,通过以下方式更新代码:

function Agregation() {
  var spreadsheet = SpreadsheetApp.getActive();
  var ss = spreadsheet.getSheetByName('Test données');
  var ts = spreadsheet.getSheetByName('Test script');
  var lr = ts.getLastRow();
  Logger.log(lr);
  ss.getRange('A2:E7').copyTo(ts.getRange('A'+(lr+1)), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

  var toDelete = ts.getRange("A" + ts.getLastRow() - 3 + ":A" + ts.getLastRow()).getValues();
  for (var i = 0; i < 4; i++){
    if (toDelete[i][0] == ""){
      Logger.log(i);
      ts.deleteRow((ts.getLastRow() - 3) + i);
    }
  }
};

它添加第一行,然后检查接下来的3行是否为“”,如果是,它将删除行,因此在下一次运行时将不会有空格