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

时间:2019-05-24 23:08:24

标签: arrays google-apps-script

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

我要比较数组行,但是脚本会继续运行而不会返回输出。

此外,我尝试从空行中替换行,而不是从currentSaved中删除行。我这样做是因为我担心删除行会改变Array的大小并导致其跳过信息。

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

这就是我现在拥有的:

  
  var emptyRow = []; //an empty row to replace deleted data
  
for (i=0; i<currentlySaved.length;i++) {
  for (j=0; j<data.length;i++) {
    if ( currentlySaved[i] == data[j]) {
      
      
     currentlySaved[i] =emptyRow;
  
  
    }
  }
}

谢谢大家!

编辑:添加了报告和saveDB的屏幕截图。对不起,他们被删掉了,工作表上的数据是机密的。 应该如何工作:如果删除了报告中的驱动程序,则应该删除其在saveDB上的行。

示例:

报告将显示从saveDB获取的信息

复选框终端驱动程序号名称  FALSE纽约1234约翰

用户将复选框标记为true,然后单击页面顶部的“删除”按钮。

然后脚本必须在saveDB上找到与该确切信息匹配的一行,然后将其删除或将其值更改为“”。

report

savedDB

2 个答案:

答案 0 :(得分:1)

两件事: 第一个是好像您在第二个循环而不是j上迭代i。

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);
      }
    }
  }
}

答案 1 :(得分:0)

我认为这是您要实现的目标:

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
}

Sheet1:

enter image description here

Sheet2:

enter image description here