删除包含范围内值的行

时间:2020-07-25 03:04:37

标签: javascript google-apps-script google-sheets

在Google表格中,如果B列上的任何值包含位于“后端”范围D3:E20中的值,我试图删除“数据”表上的整行,如果您对a以word为条件,但不在getValue范围内运行,逻辑应该像这样工作,但目前不是这样,我在这里看了几个问题,但只发现了将特定单词或短语硬编码到delete值中的选项,对于代码似乎有什么问题有何见解?

function deletee() {
  var SS = SpreadsheetApp.openById('XXXXXXXXXXX');
var SHEET = SS.getSheetByName('Data');
var RANGE = SHEET.getDataRange();
 var deletedata = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Backend').getRange("D3:E20");

 var deletee = deletedata.getValues();
 
 
var DELETE_VAL = deletee;
var COL_TO_SEARCH = 1; 
 
  
function deleteEachRow(){
  
  var rangeVals = RANGE.getValues();
  
  //Reverse the 'for' loop.
  for(var i = rangeVals.length-1; i >= 0; i--){
    if(rangeVals[i][COL_TO_SEARCH] === DELETE_VAL){
      
      SHEET.deleteRow(i+1); 
    };
  };
};
}

1 个答案:

答案 0 :(得分:0)

function dd() {
  var d=0;
  const ss=SpreadsheetApp.getActive();
  const sh=ss.getSheetByName('Data');
  const rg=sh.getRange(1,1,sh.getLastRow(),sh.getLastColumn());
  const vA=rg.getValues();
  const dsh=ss.getSheetByName('Backend');
  const drg=dsh.getRange('D3:E20');
  var dvs=drg.getValues().reduce(function(a,r) {a=a.concat(r);return a;},[]);
  vA.forEach(function(r,i){if(dvs.indexOf(r[1])!=-1){sh.deleteRow(i+1-d++);}});
}
相关问题