javascript - 使用 Apps 脚本在 Google 表格中用新数据替换重复行

标签 javascript google-apps-script google-sheets

所以,情况是这样的。我有一张从我​​的 WooCommerce 商店中提取一些数据的工作表。它每小时获取所有订单的详细信息并保存它们。
现在,当我的商店中的订单状态发生变化时,将在工作表中添加一个具有相同订单 ID 的新行,我想用这个新行替换工作表中的旧行。我四处寻找删除重复项并找到以下功能。这是有效的,但问题是它删除了新行并保留了现有行。但我想删除现有的并保留新的。我想根据工作表第 15 个索引中的订单 ID 检查重复项。

    function removeDuplicates() {
  var sheet = SpreadsheetApp.getActive().getSheetByName("Orders");
  var data = sheet.getDataRange().getValues();
  var newData = [];
  for (var i in data) {
    var row = data[i];
    var duplicate = false;
    for (var j in newData) {
      if(row[15] == newData[j][15]){
             duplicate = true;
                 }
    }
    if (!duplicate) {
      newData.push(row);
    }
  }
  sheet.clearContents();
  sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
}
任何帮助将非常感激。谢谢。

最佳答案

解释:
您的代码从第一行开始扫描,直到到达数据的最后一行。所有独特的项目都存储在 newData 中大批。当它多次遇到相同的项目时,它会简单地忽略它,因为它已经添加到数组中。
您的目标是保持 新记录 .后者应该由 定义日期 柱子。因此,在执行 for 循环之前,您可以 sort数组 按日期 降序 命令;即保留新记录( 第一次出现 )并忽略您不想要的所有其他重复项。例如,如果 B栏是一个日期/日期时间列,指示添加记录的时间,您可以简单地对数据进行排序:

sheet.getDataRange().sort({column: 2, ascending: false}) // replace 2 with your date column

解决方案:
function removeDuplicates() {
  var sheet = SpreadsheetApp.getActive().getSheetByName("Orders");
  var data = sheet.getDataRange().getValues();
  sheet.getDataRange().sort({column: 2, ascending: false}) // replace 2 with your date column
  var newData = [];
  for (var i in data) {
    var row = data[i];
    var duplicate = false;
    for (var j in newData) {
      if(row[15] == newData[j][15]){
             duplicate = true;
                 }
    }
    if (!duplicate) {
      newData.push(row);
    }
  }
  sheet.clearContents();
  sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
}

关于javascript - 使用 Apps 脚本在 Google 表格中用新数据替换重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63520296/

相关文章:

javascript - Google 电子表格脚本不断写入空字符串

javascript - 如何显示来自 GAS 的数据并自动更新每个单元格?

javascript - 鼠标悬停时,显示图像的大版本

javascript - 使用 Google 表格创建嵌套 JSON 对象

javascript - 迭代失败

google-apps-script - 我如何知道电子表格单元格是否使用 Google Apps 脚本合并

javascript - 在 Google Scripts 自定义函数中接受任意数量的参数?

javascript - Google 电子表格脚本 : toString() not returning a string?

javascript - 如何检查字符串是否以javascript中的数字开头

javascript - 从 $scope 切换到 "controller as"形式时 AngularJS Controller 初始化问题