为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

九州编程 2022-09-23 16:42:10

希望根据输入框更改此脚本以处理多个工作表(工作表1,工作表2,工作表3)。我能够通过在脚本中单独调用每个名称,然后根据文本执行添加来将名称添加到工作表中,但是我不知道如何删除。这是我从莫格斯塔德那里找到的脚本,我希望能工作。


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

}


查看完整描述

1 回答

?
慕丝7291255

TA贡献1504条经验 获得超6个赞

不是检索活动工作表,而是遍历所有工作表

  • 目前,您定义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);

}


查看完整回答
反对 回复 6天前
  • 1 回答
  • 0 关注
  • 7 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信