Arrays 比较二维数组中的行并将其替换为空行-Google脚本

Arrays 比较二维数组中的行并将其替换为空行-Google脚本,arrays,google-apps-script,Arrays,Google Apps Script,数组currentlySaved包含一个范围,其中数据保存在我的工作表中。数组数据包含要从工作表中删除的行 我要比较数组行,但是脚本一直在运行,没有返回输出 另外,我没有从currentlySaved中删除行,而是尝试用空行替换它们。我这样做是因为我担心删除行会改变数组的大小并导致它跳过信息 例如,如果删除了currentlySaved[3],currentlySaved[4]将成为新的currentlySaved[3]。因为循环已经通过i=3,所以以前保存的[4]将被忽略 这就是我现在拥有的:

数组currentlySaved包含一个范围,其中数据保存在我的工作表中。数组数据包含要从工作表中删除的行

我要比较数组行,但是脚本一直在运行,没有返回输出

另外,我没有从currentlySaved中删除行,而是尝试用空行替换它们。我这样做是因为我担心删除行会改变数组的大小并导致它跳过信息

例如,如果删除了currentlySaved[3],currentlySaved[4]将成为新的currentlySaved[3]。因为循环已经通过i=3,所以以前保存的[4]将被忽略

这就是我现在拥有的:

var emptyRow=[]//用于替换已删除数据的空行 对于i=0;我有两件事: 第一个是,似乎在第二个循环中迭代i而不是j

for (j=0; j<data.length;**i++**) {
这可能是问题的一部分

我这里的东西对你的工作有用吗

function deleteRows() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet()

  var range = sheet.getRange("A4:A10");
  var data = [1,4,6,8];
  var lastRangeRow = range.getLastRow();
  var firstRangeRow = range.getRow();

  for (var i=lastRangeRow;i > firstRangeRow - 1;i--) {
    for (j=0; j<data.length;j++) {
      if ( i == data[j]) {
        sheet.deleteRow(i);
      }
    }
  }
}

我认为这就是你想要实现的目标:

function replaceRowsWithEmptyRows() {
  var ss=SpreadsheetApp.getActive();
  var sh1=ss.getSheetByName('Sheet1');
  var rg=sh1.getDataRange();
  var dA=rg.getValues();
  var csA=dA[0].slice(0);//csA has a copy of whats in dA[0]
  var mtA=csA.map(function(el){return ''});//mtA has csA.length nulls
  for(var i=0;i<dA.length;i++) {
    if(csA.join('')==dA[i].join('')) {//comparing the contents of the arrays
      dA[i]=mtA;//if they match then replace current row with empties
    }
  }
  var sh2=ss.getSheetByName('Sheet2');
  sh2.clear();
  sh2.getRange(1,1,dA.length,dA[0].length).setValues(dA);//Displayed results in Sheet2
}
表1:

第2张:


我认为提供您想要的示例输入和输出值将帮助用户考虑您的解决方案。关于您的问题的建议。如果你从底部开始,一路往上,行的删除应该是安全的,不会干扰你的计数器。谢谢,迭代我确实是问题的一部分。现在,循环不再是无止境的。