我正在为我的公司制作一个脚本,以便它可以删除重复的条目。我从一个混合的资源中抨击它,因为我对此很陌生。此代码假设创建一个包含所有非重复条目的数组,清除整个工作表,然后粘贴到没有重复项的数组中。就目前而言,它只是用第一个单元替换了工作表上的所有内容。
我发现了这个:
if(!duplicate){
newData.push(row);
}
根本没有激活代码。
到目前为止,这是我的整个代码:
function removeDuplicates(Email, data) {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var newData = new Array();
for(i in data){
var row = data[i];
var duplicate = false;
for(j in newData){
if(row[Email] == newData[j][1]){
duplicate = true;
}
}
if(!duplicate){
newData.push(row);
}
}
sheet.clearContents();
sheet.getRange(1, 1, newData.length, newData[0].length)
.setValues(newData);
}
在我运行脚本之前和之后,工作表现在看起来像“BEFORE”部分。
我再次对此不熟悉,所以任何帮助都会非常感激。
答案 0 :(得分:1)
这是一个工作脚本:
FIELDS = {
FIRST: 0,
LAST: 1,
EMAIL: 2,
EXTRA_STUFF: 3,
};
function removeDuplicates() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data');
var data = sheet.getDataRange().getValues();
var newData = [];
for (var i = 0; i < data.length; i++) {
var duplicate = false;
for (var j = 0; j < newData.length; j++) {
if (data[i][FIELDS.EMAIL] == newData[j][FIELDS.EMAIL]) {
duplicate = true;
break;
}
}
if (!duplicate) {
newData.push(data[i]);
}
}
sheet.clearContents();
sheet.getRange(1, 1, newData.length, newData[0].length)
.setValues(newData);
}
使用您的数据,结果如下:
+-------+-------------+----------------------+-------------+
| First | Last | Email | Extra Stuff |
+-------+-------------+----------------------+-------------+
| Joe | Hays | jhays@---.com | abc123 |
| Joe | Whitten | jwhitten@---.com | abc123 |
| Caleb | Christopher | cchristopher@---.com | abc123 |
| Matt | Davis | mdavis@---.com | abc123 |
+-------+-------------+----------------------+-------------+
关于注意事项的一些注意事项:
FIELDS = {
function removeDuplicates() {
for (var i = 0; i < data.length; i++) {
for (var j = 0; j < newData.length; j++) {