Need to delete an entire row based on one cell's criteria

帅比萌擦擦* 提交于 2019-12-01 11:35:25

问题


In Google Sheets, I am trying to delete an entire row when one cell in that row contains the phrase "Delivered." The onEdit function won't work for my needs because it requires me to manually make an edit to the sheet before it works - which is not what I want. I need it to delete rows automatically [in real time] because the word "Delivered" is being generated from a live web query {=index(IMPORTXML} (shipment tracking if you haven't guessed).

Here is the formula I had using onEdit before I realized it wasn't what I needed:

function onEdit(event) { 
  var s = SpreadsheetApp.getActiveSpreadsheet();
  var r = SpreadsheetApp.getActiveRange();

// getColumn with "Delivered" is currently set to column 9 or I.

  if(r.getColumn() == 9 &&  r.getValue() == "Delivered") {
    var row = r.getRow();
    s.deleteRow(row);
  }
}

The formula is designed to delete to an entire row based on the word "Delivered" in column 9, or "I". Would onFormSubmit work for my needs, or onChange? If so, how would I structure the formula?


回答1:


Try this:

function createTimeBasedTriggerIfYouDontAlreadyHaveOne() {
  if(!isTrigger(deleteDeliveredRows)) {
     ScriptApp.newTrigger(deleteDeliveredRows).timeBased().everyDays(1).atHour(0).create();
  }
}

function deleteDeliveredRows() {
  var ss=SpreadsheetApp.openById('ssid')
  var sh=ss.getSheetByName('sheetname');
  var rowStart=2;//assume 1 row for headers
  var rg=sh.getRange(rowStart,1,sh.getLastRow()-rowStart+1,sh.getLastColumn());
  var vA=rg.getValues();
  var d=0;
  for(var i=0;i<vA.length;i++) {
    if(vA[i][8]=="Delivered") {
      sh.deleteRow(i + rowStart - d++);
    }
  }
}

function isTrigger(funcName){
  var r=false;
  if(funcName){
    var allTriggers=ScriptApp.getProjectTriggers();
    for(var i=0;i<allTriggers.length;i++){
      if(funcName==allTriggers[i].getHandlerFunction()){
        r=true;
        break;
      }
    }
  }
  return r;
}


来源:https://stackoverflow.com/questions/57298302/need-to-delete-an-entire-row-based-on-one-cells-criteria

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!