Google表格脚本:如何比较2列以删除重复项

时间:2019-08-24 16:43:32

标签: javascript google-apps-script google-sheets

Sheet1中有3个重复的文章来自同一域:https://docs.google.com/spreadsheets/d/1pExqHJQubnSPDKczkF9HMA2QN1cxTYmzyewQdugDRYs/edit#gid=0

目标:我想删除标题和域相同的文章。

表单DesiredResult具有理想的结果。

我想修改此过滤器脚本以比较文章标题(column a)和域(column C),如果它们相同,则删除:

function removeDuplicates() {
    const sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
    const data = sheet.getDataRange().getValues();

    var temp = {}; // Added
    var newData = data.filter(function(e) { // Added
        if (!temp[e[1]]) {
            temp[e[1]] = e[1];
            return true;
        }
        return false;
    });

    sheet.clearContents();
    sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
}

现在,如果它们相同,则仅查看链接。它没有使用if语句,所以我不确定如何为2列添加比较。感谢您的任何帮助,谢谢!

更新:我尝试查看!temp[e[1]]来查看if语句中是否有要比较的值,但它显示为undefined,所以我在本节中添加第二列比较的位置卡住了。

参考:上一个问题,要求比较1列-Google Sheet Scripts: How to compare only one column to remove duplicates

2 个答案:

答案 0 :(得分:2)

  • 您想通过比较列“ A”和“ C”来删除重复的行。
    • 在共享电子表格中,您希望将其从Sheet1修改为DesiredResult
  • 您想使用Google Apps脚本实现这一目标。

如果我的理解是正确的,那么该修改如何?在此修改中,使用removeDuplicates()方法。它是在2019年7月26日添加的。因此,your question已在2019年7月15日发布,很遗憾,当时尚未添加此方法。请认为这只是几个答案之一。

修改后的脚本:

const sheet = SpreadsheetApp.getActive().getSheetByName('Combined');
sheet.getDataRange().removeDuplicates([1, 3]);

注意:

  • 当您将上述修改后的脚本测试到共享电子表格时,请将表名从Combined修改为Sheet1

参考:

如果我误解了您的问题,而这不是您想要的结果,我深表歉意。

已添加:

如果要修改脚本,请执行以下修改?另外,请考虑一下这只是几个答案之一。

发件人:

if (!temp[e[1]]) {
    temp[e[1]] = e[1];

收件人:

if (!temp[e[0] + e[2]]) {
    temp[e[0] + e[2]] = e[1];

答案 1 :(得分:0)

function removeDuplicates() {
  var sheet=SpreadsheetApp.getActive().getSheetByName('Sheet1');
  var data=sheet.getDataRange().getValues();
  var newData = data.filter(function(r) {
    return !(r[0]==r[2])//comparing column A with Column C
  }); 
  sheet.clearContents();
  sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
}

对此数据进行测试:

1,a,a
2,b,a
3,c,a
4,a,a
5,b,a
6,c,6
7,a,7
8,b,8
9,c,9

Array.filter()