我正在为我的公司编写一个脚本,以便它可以删除重复的条目。我一直在从各种来源中对它进行猛烈攻击,因为我对此还很陌生。这段代码应该创建一个包含所有非重复条目的数组,清除整个工作表,然后粘贴到没有重复的数组中。按照目前的情况,它只是用第一个单元格替换工作表上的所有内容。
我发现:
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);
}
现在,在运行脚本之前和之后,工作表看起来都像“之前”部分。
我再次对此感到陌生,因此我们将不胜感激任何帮助。
最佳答案
这是一个工作脚本:
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++) {
- 内部循环需要搜索 newData 数组,扫描其是否有重复项
- 将单独的表写入另一个表可能是个好主意,这样,如果您遇到意外问题,您可以轻松使用原始数据
关于javascript - Google Apps 表格跳过 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50748831/