首页 > 解决方案 > 有没有办法用脚本将数据从一张纸复制到另一张纸上?

问题描述

我希望将数据从一张表复制到另一张表,同时能够从第一张表中删除数据并使用表 1 中的新数据不断更新第二张表。

表 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});
    }; ```

标签: google-apps-scriptgoogle-sheets

解决方案


解释:

  • 鉴于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);
  }
}

推荐阅读