复制到新的 sheet 后如何删除筛选的行?

How can I delete my filtered rows after copying to new sheet?

我需要一个脚本,在将过滤的行复制到新的 sheet 后删除它们。

这是我必须过滤并复制到新 sheet:

的代码
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);
}

它利用了appendRows_() 我尝试了以下代码但无济于事:

const ws = ss.getSheetByName("Template");  
const colSData = ws.getRange('S3:S').getValues();  

for(let i =colSData.length-1;i>=0;i--){   
   if(colSData[i][0] == true){     
   //console.log(colSData);     
   ws.deleteRows(i+1);   
   } 
 }

在你的脚本中,作为一个简单的修改,下面的修改怎么样?

发件人:

ws.deleteRows(i+1);   

收件人:

ws.deleteRows(i + 3);
  • 在您的脚本中,使用 const colSData = ws.getRange('S3:S').getValues(); 检索值。据此,我认为ws.deleteRows(i+1);可能需要修改为ws.deleteRows(i + 3);

  • 顺便说一句,在您的脚本中,将const colSData = ws.getRange('S3:S').getValues();修改为const colSData = ws.getRange('S3:S' + ws.getLastRow()).getValues();时,处理成本可能会降低一些。