【问题标题】:Can't find and remove duplicates in Google Apps Script无法在 Google Apps 脚本中查找和删除重复项
【发布时间】:2018-07-06 10:48:57
【问题描述】:

我有两列,其中包含数据。其中一列(在不同的工作表上)是已批准客户的列表 (approvedClients)。另一个是当前工作表中的一列 (currentClients)。我的目标是查看另一张表中的列和此表中的列,并显示当前表中的差异。

例如,如果 [1,2,3,4,5,6] 是当前列,而另一张表上的列是 [1,3,5,6],我希望我的结果是 [2,4],因为 2 和 4 是当前列中存在的值列,但不在另一张纸的列中。

当我运行下面的代码时,我没有收到任何错误,但是当我记录 unknownClients 时,我得到了this。怎么了?

function myFunction() {
 var sheet = SpreadsheetApp.getActiveSheet();
 var ui = SpreadsheetApp.getUi();
 var cell;
 var range;

  switchSheets('Results');
  var currentClients = sheet.getRange('B2:' + sheet.getLastRow()); //gets the clients that are currently connected. 
  switchSheets('Approved clients');
  var approvedClients = sheet.getRange('A2:' + sheet.getLastRow()); //gets the clients that are approved to connect.
  switchSheets('Results');
  var unknownClients = new Array();

  for(i in currentClients){
    var row = currentClients[i];
    var duplicate = false;
    for(j in unknownClients){
      if(row == unknownClients[j]){
        duplicate = true;
      }
    }
    if(!duplicate){
      unknownClients.push(row);
    }
  }
  Logger.log(unknownClients);
}

【问题讨论】:

  • 这是什么函数switchSheets(),可以分享代码吗?
  • @JackBrown 这是一个改变活动工作表的自定义函数。
  • 更改活动工作表不会追溯更改工作表变量。它仍然是指分配给它的第一张工作表。
  • 另外,您能否再次检查您的粘贴箱链接。好像错了!
  • 尝试将var unknownClients = new Array(); 更改为var unknownClients = [];。您可能还想查看this SO question,因为它基本上讨论的是同一件事。

标签: javascript google-apps-script google-sheets duplicates


【解决方案1】:

这是我的错误:
- 我没有得到单元格的值。我得到了一个工作表对象。它正在记录工作表对象的所有方法。
- 我试图将 connectedClients 列表与 unknownClients 列表(一个空数组)进行比较。我将两个对unknownClients 的引用更改为approvedClients。
我所做的更改是大写的。

我非常感谢这个社区的帮助。如果可以的话,我会尽量回答,谢谢你这样做。

function myFunction() {
 var sheet = SpreadsheetApp.getActiveSheet();
 var ui = SpreadsheetApp.getUi();
 var cell;
 var range;

  switchSheets('Results');
  var currentClients = sheet.getRange('B2:' + sheet.getLastRow()).getValues(); //ADDED THE GET VALUES
  switchSheets('Approved clients');
  var approvedClients = sheet.getRange('A2:' + sheet.getLastRow()).getValues(); //ADDED THE GET VALUES
  switchSheets('Results');
  var unknownClients = new Array();

  for(i in currentClients){
    var row = currentClients[i];
    var duplicate = false;
    for(j in approvedClients){ //CHANGED UNKNOWN TO APPROVED
      if(row == approvedClients[j]){ //CHANGED UNKNOWN TO APPROVED
        duplicate = true;
      }
    }
    if(!duplicate){
      unknownClients.push(row);
    }
  }
  Logger.log(unknownClients);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    相关资源
    最近更新 更多