Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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
Javascript 基于列单元格值清除特定行_Javascript_Arrays_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 基于列单元格值清除特定行

Javascript 基于列单元格值清除特定行,javascript,arrays,google-apps-script,google-sheets,Javascript,Arrays,Google Apps Script,Google Sheets,我有一个marco,它允许我清除工作表上的所有内容,但我正在尝试执行另一个操作,仅清除特定行,而不是清除所有列中显示“是”的行。我通过将此操作分配给一个按钮来分隔它 我在stackoverflow和一些网站上找到了一些代码,这些代码看起来很有效,但当我在我的工作表上尝试时,什么都没有发生。不确定是我的范围问题(我仍然对范围感到困惑)还是代码问题 给出一个想法: 包含数据的范围为A3:L100 包含“是”的列是第L3列:L100 仅清除特定行,而不重新格式化行中的任何内容。 例如,第1行不能清除

我有一个marco,它允许我清除工作表上的所有内容,但我正在尝试执行另一个操作,仅清除特定行,而不是清除所有列中显示“是”的行。我通过将此操作分配给一个按钮来分隔它

我在stackoverflow和一些网站上找到了一些代码,这些代码看起来很有效,但当我在我的工作表上尝试时,什么都没有发生。不确定是我的范围问题(我仍然对范围感到困惑)还是代码问题

给出一个想法:

  • 包含数据的范围为A3:L100
  • 包含“是”的列是第L3列:L100
  • 仅清除特定行,而不重新格式化行中的任何内容。 例如,第1行不能清除,第2行需要清除,第3行不能清除
  • 清除此选项后,将第3行的数据移到第2行,替换第2行的数据
  • 我处理多达100行的数据,因此数据的范围是A3:L100
到目前为止,当我运行脚本时,我没有看到任何包含“Yes”的行被清除。我真的很感激你的帮助

以下是我目前在网站上的代码:

function Remove(){
      var depositid = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = depositid.getSheetByName("customer"); // sheet name is this "customer"
      var RANGE = sheet.getDataRange(); //do i have to fill in the ranges here?

      var DELETE_VAL = "Yes";  // Keyword to remove the row
      var COL_TO_SEARCH = 11; // Column L = 11

    function main() {

  var startTime = new Date().getTime();
  var deleteSelectedRows = removeThenSetNewVals();
  var runTime = (new Date().getTime() - startTime)/1000;
  Logger.log("Runtime is: "+runTime + " seconds");
};

function removeThenSetNewVals(){

      var rangeVals = RANGE.getValue();
      var newRangeVals = [];

      for(var i = 0; i < rangeVals.length; i++){
        if(rangeVals[i][COL_TO_SEARCH] != DELETE_VAL){
          newRangeVals.push(rangeVals[i]);  
        };
      };

      RANGE.clearContent();

      var newRange = SHEET.getRange(1,1,newRangeVals.length, newRangeVals[0].length);
      newRange.setValues(newRangeVals); //not sure if this is the culprit
    }
};
函数删除(){
var depostiid=SpreadsheetApp.getActiveSpreadsheet();
var sheet=depositid.getSheetByName(“客户”);//工作表名称是这个“客户”
var RANGE=sheet.getDataRange();//我必须在这里填写范围吗?
var DELETE_VAL=“Yes”//删除行的关键字
var COL_TO_SEARCH=11;//列L=11
函数main(){
var startTime=new Date().getTime();
var deleteSelectedRows=removeThenSetNewVals();
var runTime=(new Date().getTime()-startTime)/1000;
log(“运行时为:“+Runtime+”秒”);
};
函数removeThenSetNewVals(){
var rangeVals=RANGE.getValue();
var newRangeVals=[];
对于(变量i=0;i
如果第11列等于“是”,则清除行

function Remove(){
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName("customer");
  var vs=sh.getDataRange().getValues();
  vs.forEach(function(r,i){
   if(r[10]=='Yes') {//if column 11=="yes"
     sh.getRange(i+1,1,1,sh.getLastColumn()).clear();//clear current row
   }
 });
}

数组从零开始。行从1开始,因此当范围从1开始时,i+1是行号,sh.getDataRange()获取工作表上的所有数据。

如果第11列等于“是”,则清除行

function Remove(){
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName("customer");
  var vs=sh.getDataRange().getValues();
  vs.forEach(function(r,i){
   if(r[10]=='Yes') {//if column 11=="yes"
     sh.getRange(i+1,1,1,sh.getLastColumn()).clear();//clear current row
   }
 });
}

数组从零开始。行从1开始,因此当范围从1开始时,i+1是行号,sh.getDataRange()获取工作表上的所有数据。

能否解释最后一部分是如何工作的?我想理解。这些评论有用吗?你能解释一下最后一部分是如何工作的吗?我想理解。这些评论有用吗?