我需要删除标题行(?)从我的过滤和复制的数据在谷歌表



编辑:包含代码运行后的数据图像

我有一个谷歌表,是持有一些具体到百分比的数据。当达到这个百分比时,则不再需要该行。我想把它复印到另一张纸上存档。我有一个复选框,将用于选择不再需要的多行,我将有一个按钮,将运行脚本移动行。我已经尝试了一些迭代的代码,但每次额外的行在顶部被复制。我尝试过各种功能,如偏移,行深,移位,但没有运气。(我可能没有把代码放在正确的位置。)

这是数据布局的截图:数据布局

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

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();
}

我最终复制的内容:你可以看到这里多出了一行

感谢

您的屏幕截图表明行Archive!1:2已经包含标题作为静态文本。你在复制这两行下面的所有range。问题是range包括标题行。你可以试着这样修复:

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

最新更新