【问题标题】:Deleting Row - Google Apps Script "Cannot find method deleteRow((class))"删除行 - Google Apps 脚本“找不到方法 deleteRow((class))”
【发布时间】:2020-01-27 17:36:05
【问题描述】:

这是我的功能:

function deleteContact(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var wsname = ss.getRangeByName("contactName").getValue();
  var wscl = ss.getSheetByName('Connection List');
  var wsRange = wscl.getRange("A1:A").getValues();

  for(var i = 0; i<wsRange.length;i++){
    if(wsRange[i][0] == wsname){ 
      var row = i+1; //This gets the row number 
    }
  var ui = SpreadsheetApp.getUi();
  var response = ui.alert("Are You Sure You Want To Delete " + wsname, ui.ButtonSet.YES_NO);

    if (response == ui.Button.YES) {
      var delr = wscl.deleteRow(row);
} 
  }
    }

我可以得到行号,但是一旦我点击“是”按钮,我就会收到这个错误:

找不到方法 deleteRow((class))。

有什么建议吗?我希望函数删除它找到的行。

【问题讨论】:

    标签: function google-apps-script delete-row


    【解决方案1】:

    试试这个:

    function deleteContact(){
      var ss=SpreadsheetApp.getActive();
      var wsname=ss.getRangeByName("contactName").getValue();
      var wscl=ss.getSheetByName('Connection List');
      var wsValues=wscl.getRange(1,1,wscl.getLastRow(),1).getValues();
      var d=0;
      for(var i=0;i<wsValues.length;i++){
        if(wsValues[i][0]==wsname){ 
          var row=i+1-d; //This gets the row number 
          var ui=SpreadsheetApp.getUi();
          var response=ui.alert("Are You Sure You Want To Delete " + wsname, ui.ButtonSet.YES_NO);
          if (response == ui.Button.YES) {
            wscl.deleteRow(row);
            d++;
          } 
        }
      }
    }
    

    当您删除行时,留下的行每次都会向上移动一行,但数据是在删除行之前获取的,因此用于从数据数组计算地址的索引必须由已被删除。

    您还有一些本应在if(wsValues[i][0]==wsname){ 范围内的行,但我没有将它们移入,现在它只删除了具有正确名称的行。

    【讨论】:

    • 很高兴为您提供帮助。祝你有美好的一天。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 1970-01-01
    • 2016-10-21
    • 2020-10-18
    • 2016-01-27
    • 1970-01-01
    相关资源
    最近更新 更多