Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 改进了通过包含值删除行的功能_Arrays_If Statement_Google Apps Script_Google Sheets - Fatal编程技术网

Arrays 改进了通过包含值删除行的功能

Arrays 改进了通过包含值删除行的功能,arrays,if-statement,google-apps-script,google-sheets,Arrays,If Statement,Google Apps Script,Google Sheets,我有一个工作代码,如果列符合其中一个条件,就从工作表中删除行。它基于数组,因此比标准的GoogleSheetdeleteRow函数运行得更快。我这样称呼它: deleteRowsBV('SIZ',4,'0','') deleteRowsBV('SIZ',4,<='0',=='') 在哪里 我想要的是一个带有或多或少等号的调用函数,如下所示: deleteRowsBV('SIZ',4,'0','') deleteRowsBV('SIZ',4,<='0',=='') delete

我有一个工作代码,如果列符合其中一个条件,就从工作表中删除行。它基于数组,因此比标准的GoogleSheet
deleteRow
函数运行得更快。我这样称呼它:

deleteRowsBV('SIZ',4,'0','')
deleteRowsBV('SIZ',4,<='0',=='')
在哪里

我想要的是一个带有或多或少等号的调用函数,如下所示:

deleteRowsBV('SIZ',4,'0','')
deleteRowsBV('SIZ',4,<='0',=='')
deleteRowsBV('SIZ',4,基于此,对于电子表格应用程序中的所有方法,电子表格行和列从1开始编号,而javascript数组从0开始编号。处理这两个方法时,您需要在这些数字基数之间进行调整。删除行时,电子表格数据范围的大小将变小;您确实考虑到了这一点nt,但由于您要循环到最大大小,因此此要求使代码变得复杂。您可以通过从最大大小循环来简化事情

您可以参考这个。但是,它现在只查看单个单元格编辑的值,而不查看整个工作表中的值

基于此,电子表格行和列的编号从1开始,对于电子表格应用程序中的所有方法,而javascript数组的编号从0开始。在使用这两个数字基时,您需要在这些数字基之间进行调整。删除行时,电子表格数据范围的大小将变小;您确实考虑到了这一点,但因为你要循环到最大大小,所以这个要求会使代码变得复杂。你可以通过从最大值开始循环来简化事情

您可以参考这个。但是,它现在只查看单个单元格编辑的值,而不查看整个工作表中的值

function onEdit(e) {
  //Logger.log(JSON.stringify(e)); 
  //{"source":{},"range":{"rowStart":1,"rowEnd":1,"columnEnd":1,"columnStart":1},"value":"1","user":{"email":"","nickname":""},"authMode":{}}
  try {
    var ss = e.source; // Just pull the spreadsheet object from the one already being passed to onEdit
    var s = ss.getActiveSheet();

    // Conditions are by sheet and a single cell in a certain column
    if (s.getName() == 'Sheet1' &&  // change to your own 
        e.range.columnStart == 3 && e.range.columnEnd == 3 &&  // only look at edits happening in col C which is 3
        e.range.rowStart == e.range.rowEnd ) {  // only look at single row edits which will equal a single cell
      checkCellValue(e); 
    }
  } catch (error) { Logger.log(error); }
};

function checkCellValue(e) {
  if ( !e.value || e.value == 0) {  // Delete if value is zero or empty
    e.source.getActiveSheet().deleteRow(e.range.rowStart);
  }
}