是否可以使用脚本将数据从一张纸复制到另一张纸?

时间:2020-11-07 11:04:51

标签: google-apps-script google-sheets

我希望将数据从一张纸复制到另一张纸,同时能够从第一张纸上删除数据,并用第一张纸上的新数据连续更新第二张纸。

第1张信息来自表单,我希望能够每天删除数据,因为随着添加更多数据,计算速度会变慢。然后,我想获取该数据并将其复制到sheet2。同时保留所有过去的数据。

这里是工作表的链接(旧并保留)

https://docs.google.com/spreadsheets/d/1hLvbJL_21WWSsaEfBWj2XgKJAqlB6eIO6MwBFJAGmmI/edit?usp=sharing

这是剧本

    {
      var sheet = SpreadsheetApp.getActive();
      var originSheet = sheet.getSheetByName("old");
      var row = sheet.getSheetByName("old").getLastRow();
      var col = sheet.getSheetByName("old").getLastColumn();
      var listToCopy = originSheet.getRange('old!A1:' + col + row);
      var destinationSheet = sheet.getSheetByName("keep");
      var row1 = sheet.getSheetByName("keep").getLastRow();
      var destinationColum = destinationSheet.getLastColumn();
      listToCopy.copyTo(destinationSheet.getRange("keep!A" + (row1 + 1)));
      spreadsheet.setActiveSheet(spreadsheet.getSheetByName("old"), true);
      spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
    }; ```

1 个答案:

答案 0 :(得分:1)

说明:

  • 鉴于old源工作表已连接到表单,将数据粘贴到新工作表后删除行是一个好主意。否则,表单中的新数据将被添加到上次输入的行之后。要删除连续的行,请使用deleteRows(rowPosition, howMany)

  • 以下脚本将从源工作表中获取当前数据,将其粘贴到目标工作表中,并删除数据在源工作表中所在的行。我还要检查是否在指定范围内有数据要复制。

解决方案:

function copyTokeep() {
  const ss = SpreadsheetApp.getActive();
  const src_sh = ss.getSheetByName('old');
  const src_lr = src_sh.getLastRow();
  const dest_sh = ss.getSheetByName('keep');
  const src_data = src_sh.getRange('A2:K'+src_lr).getValues();
  if (src_lr>1){
  src_sh.deleteRows(2,src_lr-1);  
  dest_sh.getRange(dest_sh.getLastRow()+1,1,src_data.length,src_data[0].length).setValues(src_data);
  }
}
相关问题