过滤器&快速删除基于列值的数据行! (Google表)

发布于 2025-02-13 12:51:08 字数 487 浏览 1 评论 0原文

有没有一种方法可以更快地将我的Google表列中的数据过滤,然后一一读取行。每天需要扫描约400多行,如果Q列中的数据现在不到1个,我需要删除每行数据,大约需要10分钟以上。

  function UpdateLog() {

  var returnSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('CancelRawData');
  var rowCount = returnSheet.getLastRow();

  for (i = rowCount; i > 0; i--) {
    var rrCell = 'Q' + i;
    var cell = returnSheet.getRange(rrCell).getValue();
    if (cell < 1 ){
      returnSheet.deleteRow(i);
    }
  }
  {

SpreadsheetApp.getUi().alert("
              

Is there a way to filter the data in column Q off my google sheet faster then reading line one by one. There is daily about 400+ lines it needs to scan through and I need to delete every row of data if the data in column Q is less than 1 right now watching it, it takes about 10+ minutes.

  function UpdateLog() {

  var returnSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('CancelRawData');
  var rowCount = returnSheet.getLastRow();

  for (i = rowCount; i > 0; i--) {
    var rrCell = 'Q' + i;
    var cell = returnSheet.getRange(rrCell).getValue();
    if (cell < 1 ){
      returnSheet.deleteRow(i);
    }
  }
  {

SpreadsheetApp.getUi().alert("???? Congratulations, your data has been updated", SpreadsheetApp.getUi().ButtonSet.OK);
}
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

橙幽之幻 2025-02-20 12:51:08

这样尝试:

function UpdateLog() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName('Sheet0');
  const vs = sh.getDataRange().getValues();
  let d = 0;
  vs.forEach((r, i) => {
    if (!isNaN(r[16]) && r[16] < 1){
      sh.deleteRow(i + 1 - d++);
    } 
  });
}

这更快一些

function UpdateLog() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName('Sheet0');
  const vs = sh.getDataRange().getValues().filter(r => !isNaN(r[16]) && r[16] < 1);
  sh.clearContents();
  sh.getRange(1,1,vs.length,vs[0].length).setValues(vs);
}

Try it this way:

function UpdateLog() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName('Sheet0');
  const vs = sh.getDataRange().getValues();
  let d = 0;
  vs.forEach((r, i) => {
    if (!isNaN(r[16]) && r[16] < 1){
      sh.deleteRow(i + 1 - d++);
    } 
  });
}

This is a bit quicker

function UpdateLog() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName('Sheet0');
  const vs = sh.getDataRange().getValues().filter(r => !isNaN(r[16]) && r[16] < 1);
  sh.clearContents();
  sh.getRange(1,1,vs.length,vs[0].length).setValues(vs);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文