【问题标题】:Google Script to remove duplicates from top to bottom谷歌脚本从上到下删除重复项
【发布时间】:2019-04-10 20:43:22
【问题描述】:

我有一个脚本,它结合了三个脚本来执行以下操作:

1) 将行从一个选项卡插入到另一个选项卡的顶部 2)从刚刚添加数据的选项卡中删除重复项 3) 清除刚刚从中移植数据的旧选项卡

对于 De-dupe 脚本,它从底部开始删除行,然后向上。所以我已经建立并删除了现有数据。我需要它做的是从顶部开始向下。因此,如果发现从第一个脚本移植过来的新行记录是重复的,则应该删除这些记录。

我怎样才能让重复数据删除脚本基本上以相反的方式处理?

我确实通过下面的链接找到了反向逻辑,但我找不到一种方法让它与我的脚本一起工作并不断出错。我也不确定这是否是适合我的整体脚本的最佳方法。

链接:Removing Duplicate Rows in a google Spreadsheet from the end row

function Run(){
  insert();
  removeDuplicates();
  clear1();
}
function insert() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var source = ss.getSheetByName('Candidate Refresh'); // change here
  var des = ss.getSheetByName('Candidate Listing'); // change here

  var sv = source
    .getDataRange()
    .getValues();
  sv.shift();
  des.insertRowsAfter(1, sv.length);
  des.getRange(2, 1, sv.length, source.getLastColumn()).setValues(sv);
}

//Code in Question Start

function removeDuplicates() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var rows = sheet.getLastRow();
  var firstColumn = sheet.getRange(1, 2, rows, 1).getValues();
firstColumn = firstColumn.map(function (e) {return e[0]})
  for (var i = rows; i >0; i--) {
    if (firstColumn.indexOf(firstColumn[i-1]) != i-1) {
      sheet.deleteRow(i);
    }
  }
}

//Code in Question End

function clear1() {
  var sheet = SpreadsheetApp.getActive().getSheetByName('Candidate Refresh');
  sheet.getRange('A2:K100').clearContent()

}

如果发现工作表顶部的新行重复,请删除顶部的新行。

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    试试这个:

    function removeDuplicates() {
      var sheet=SpreadsheetApp.getActiveSheet();
      var rows=sheet.getLastRow();
      var firstColumn=sheet.getRange(1, 2, rows, 1).getValues();
      firstColumn = firstColumn.map(function(e){return e[0]})
      var uA=[];
      for (var i=rows;i>0;i--) {
        if (uA.indexOf(firstColumn[i-1])!=-1) {
          sheet.deleteRow(i);
        }else{
          uA.push(firstColumn[i-1]);
        }
      }
    }
    

    【讨论】:

    • 感谢您在此输入。运行后它似乎没有删除任何重复项,尽管运行时我没有收到任何错误。
    • 我刚改了再试试。
    • 很高兴为您提供帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 2018-02-28
    • 1970-01-01
    • 2021-06-10
    相关资源
    最近更新 更多