首页 > 解决方案 > 删除重复行、工作表和谷歌脚本的功能

问题描述

我想要一个删除重复行或 cels 的脚本。遵循下一个要求

ID 利用 颜色 不能
40220761 潘塔隆 罗霍 3
42863313 雷梅拉 2
39237132 卡米萨 佛得角 5
36712204 坎佩拉 马龙 1
39952572 坎佩拉 马龙 0
39952572 坎佩拉 阿祖尔 0
40877684 潘塔隆 2
39952572 卡米萨 阿祖尔 2
39952572 雷梅拉 佛得角 4
20335585 雷梅拉 罗霍 2
38640205 潘塔隆 佛得角 3
40822540 媒体 佛得角 4
36712204 潘塔隆 维奥莱塔 4
27596240 潘塔隆 布兰科 4
36712204 潘塔隆 罗霍 4
10318933 媒体 布兰科 4
25935061 媒体 阿祖尔 4
10318933 潘塔隆 阿祖尔 1
10318933 雷梅拉 布兰科 1
41363468 媒体 布兰科 1
12233157 卡米萨 布兰科 0
10318933 雷梅拉 佛得角 2
27596240 潘塔隆 阿祖尔 3
36712204 潘塔隆 罗霍 1
10318933 雷梅拉 佛得角 5
27596240 潘塔隆 阿祖尔 3

我需要该脚本删除或清除重复的单元格,(颜色 cels)。我需要比较 ID;USE 和 Color 列没有别的了....不重要不能。我不能使用...数据...删除工作表菜单或任何插件的重复项,因为只是比较重复的行,

标签: javascriptgoogle-apps-script

解决方案


我怀疑你需要条件格式,但如果你想要一个脚本,它就在这里:

function remove_duplicates() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const data = sheet.getDataRange().offset(1,0).getValues();

  // an object can have only unique keys
  // thus if we make key from a row content 
  // the object will have only unique rows

  const obj = {};
  data.forEach(x => obj[[x[0],x[1],x[2]].join()] = x);

  const new_data = Object.values(obj); // make an array from the object's values

  sheet.getRange(2,1,data.length,data[0].length).clearContent();
  sheet.getRange(2,1,new_data.length,new_data[0].length).setValues(new_data);
}

推荐阅读