gpt4 book ai didi

javascript - Google Apps 表格跳过 if 语句

转载 作者:行者123 更新时间:2023-12-03 01:43:17 26 4
gpt4 key购买 nike

我正在为我的公司编写一个脚本,以便它可以删除重复的条目。我一直在从各种来源中对它进行猛烈攻击,因为我对此还很陌生。这段代码应该创建一个包含所有非重复条目的数组,清除整个工作表,然后粘贴到没有重复的数组中。按照目前的情况,它只是用第一个单元格替换工作表上的所有内容。

我发现:

    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);
}

Image of before and after running the script so far

现在,在运行脚本之前和之后,工作表看起来都像“之前”部分。

我再次对此感到陌生,因此我们将不胜感激任何帮助。

最佳答案

这是一个工作脚本:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com