从多个表中删除基于TEXT消息框的行

问题描述 投票:0回答:1

根据输入框,希望更改此脚本以在多于一张工作表(sheet1,sheet2,sheet3)上工作。通过在脚本中分别调用每个名称,然后基于文本执行添加,我能够将名称添加到工作表中,但是我不知道如何删除。这是我在Mogsdad上找到的脚本,希望能使它起作用。

function Deletename() {    
  var value_to_check =
    Browser.inputBox(
      "Enter First and Last Name to Delete",
      "",
      Browser.Buttons.OK_CANCEL);

  var FIRST_COLUMN = 1

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var DATA_SHEET =
    SpreadsheetApp.getActiveSpreadsheet()
                  .getActiveSheet();

  ss.toast("removing duplicates...", "", -1);

  var dataCopy1 = DATA_SHEET.getDataRange().getValues();
  var deleted_rows = 0;

  if (dataCopy1.length > 0) {
    var i = DATA_SHEET.getLastRow(); // start at bottom

    while (i > 0) {
      if (dataCopy1[i - 1][FIRST_COLUMN - 1] === value_to_check) {    
        ss.deleteRow(i);
        deleted_rows++;
      }
      i--;
    }
  }

  ss.toast("Done! " + deleted_rows + ' rows removed', "", 5);
}
javascript google-apps-script row
1个回答
0
投票

而不是检索活动工作表,而是循环浏览所有工作表

  • 当前,您定义var DATA_SHEET = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  • 这将仅将您的请求应用于活动工作表
  • 相反,您可以使用ss.getSheets()检索电子表格的所有工作表,并在循环中依次将每个可用工作表定义为DATA_SHEET
  • 像以前一样在循环中运行其余代码,请谨慎删除行:
  • 如果有多个工作表,请将ss.deleteRow(i);更改为DATA_SHEET.deleteRow(i);以删除当前循环通过的工作表中的行,而不是活动的行

样本:

function Deletename() {    
  var value_to_check =
      Browser.inputBox(
        "Enter First and Last Name to Delete",
        "",
        Browser.Buttons.OK_CANCEL);

  var FIRST_COLUMN = 1

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = ss.getSheets();
  for (var a = 0; a < sheets.length; a++){
    var DATA_SHEET = sheets[a];

    ss.toast("removing duplicates...", "", -1);

    var dataCopy1 = DATA_SHEET.getDataRange().getValues();
    var deleted_rows = 0;

    if (dataCopy1.length > 0) {
      var i = DATA_SHEET.getLastRow(); // start at bottom

      while (i > 0) {
        if (dataCopy1[i - 1][FIRST_COLUMN - 1] == value_to_check) {    
          DATA_SHEET.deleteRow(i);
          deleted_rows++;
        }
        i--;
      }
    }
  }
  ss.toast("Done! " + deleted_rows + ' rows removed', "", 5);
}
© www.soinside.com 2019 - 2024. All rights reserved.