【问题标题】:How can I compare two Column A on two sheet for differences and update the differences on the older sheet using Google Apps Script?如何比较两张工作表上的两个 A 列的差异并使用 Google Apps 脚本更新旧工作表上的差异?
【发布时间】:2019-07-03 16:41:12
【问题描述】:

目前,我在电子表格中有 2 个选项卡,它们的数据几乎相同。

第一个标签是从另一个电子表格导入的,其中包含员工姓名及其团队。我的第二个选项卡具有相同的信息,但它是手动更新的。

第二个选项卡右侧的列取决于这些特定单元格中的员工姓名,因此很难直接在此表中执行IMPORTRANGE,因为如果在中间编辑了某些内容,则右侧的列都是不正确的,不再匹配正确的员工。

我很好奇 Google Apps 脚本中是否有办法设置时间事件触发器来比较两个选项卡,找出员工姓名的差异,并将缺少的姓名添加到第一个选项卡的底部。很抱歉缺少代码,我不知道从哪里开始以及如何比较两个数据集的 Apps 脚本差异。

样品表链接:

导入的数据 - https://docs.google.com/spreadsheets/d/1NjIReOZhSmF_eaSBrt6nmUh__ycPDgPvmJ-K-APMU0I/edit?usp=sharing

工作表 - https://docs.google.com/spreadsheets/d/1bFdVw0uzP7TX7JXsZ1iYajk85bKfHRrBPR02ZFDtRAU/edit?usp=sharing

【问题讨论】:

  • 您的第一个链接不公开。
  • 抱歉,忘记了我用我的工作电子邮件制作了那张表。它现在已更新为访问权限。

标签: google-apps-script google-sheets


【解决方案1】:

这将返回一个名称不在两个列表中的数组,或者返回一个空数组。

function findNewNames() {
  var ss=SpreadsheetApp.getActive();
  var sh1=ss.getSheetByName('Sheet1');
  var sh2=ss.getSheetByName('Sheet2');
  var nl1=sh1.getRange(1, 1,sh1.getLastRow(),1).getValues().map(function(r){return r[0]});
  var nl2=sh2.getRange(1, 1,sh2.getLastRow(),1).getValues().map(function(r){return r[0]});
  var d=0;
  if(nl1.length>nl2.length) {
    var lA=nl1.slice();
    var sA=nl2.slice();
  }
  if(nl2.length>nl1.length){
    var lA=nl2.slice();
    var sA=nl1.slice();
  }
  if(nl1.length==nl2.length) {
    return [];
  }
  for(var i=0;i<lA.length;i++) {
    if(sA.indexOf(lA[i-d])>-1) {
      lA.splice(i-d++,1)
    }
  }
  return lA;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多