我需要从 Google 表格中过滤和复制的数据中删除 header 行(?)

I need to remove the header rows(?) from my filtered and copied data in Google Sheets

已编辑:在代码 运行 之后包含数据图像。

我有一个 google sheet 保存着一些特定于百分比的数据。当达到这个百分比时,就不再需要该行。我想将其复制到另一个 sheet 以将其保存在存档中。我有一个复选框,用于 select 不再需要的多行,我将有一个按钮,该按钮将 运行 脚本移动行。 我尝试了几次代码迭代,但每次都会复制顶部的额外行。我尝试了各种函数,例如偏移量、行深度、移位但没有成功。 (我可能没有把代码放在正确的地方。)

这是数据布局的屏幕截图: Layout of data

这是我目前正在尝试使用的代码:

function create_filter(){
    
   const ss = SpreadsheetApp.getActiveSpreadsheet();
   const sheet1 = ss.getSheetByName("Template");
   const range = sheet1.getRange("A:S");
   const  filter = range.createFilter();
   const  filterCriteria1 = SpreadsheetApp.newFilterCriteria().whenTextEqualTo('TRUE')
   const col1 = 19;

   const add_filter1 =filter.setColumnFilterCriteria(col1,filterCriteria1); 

   Logger.log("Filter has been added.");

   var rangeData = sheet1.getDataRange();
    
   const sheet2 = ss.getSheetByName("Archive");
   
   range.copyTo(sheet2.getRange(3,1));

   filter.remove();
}

我最终复制的内容: You can see the extra row here

谢谢

您的屏幕截图表明第 Archive!1:2 行已经包含 header 作为静态文本。您正在复制这两行下方的所有 range。问题是 range 包含 header 行。您可以尝试像这样修复它:

   const range = sheet1.getRange('A2:S');

每次 运行 脚本都会覆盖 Archive 中的先前数据。要附加数据而不是覆盖它,您可以使用 appendRows_() 实用函数,如下所示:

function archiveData() {
  const ss = SpreadsheetApp.getActive();
  const values = ss.getRange('Template!A3:S')
    .getValues()
    .filter(row => row[18]); // column S
  const targetSheet = ss.getSheetByName('Archive');
  appendRows_(targetSheet, values, 1);
}