繁体   English   中英

使用 Google App Script 将列从 Sheet1 复制到 Sheet2 并远程复制

[英]Copy columns from Sheet1 to Sheet2 & remote duplicates using Google App Script

如何将 SOURCE 电子表格中的所有唯一行复制/附加到 DESTINATION 电子表格。

  • 电子表格 #1 (SOURCE) - 包含 ID 和名称。 此工作表有重复的行。 500k+ 行(访问:仅查看)
  • 电子表格 #2 (DESTINATION) - 仅包含带有名称的唯一 ID。 (访问:编辑)

此脚本有效,但它会复制所有内容(包括重复项)。

function transferIDs() {
  var sss = SpreadsheetApp.openById('%'); //SOURCE
  var ss = sss.getSheetByName('Sheet1');
  var SRange = ss.getDataRange();
  var A1Range = SRange.getA1Notation();
  var SData = SRange.getValues();

  var dss = SpreadsheetApp.openById('#'); //DESTINATION
  var ds = dss.getSheetByName('Sheet1');
  ds.clear({contentsOnly: true});
  ds.getRange(A1Range).setValues(SData);
}

电子表格 #1 SOURCE(包含重复行)

一个
ID 姓名
X123456 约翰
Y112233 莎拉
X998877 阿曼达
012344 鲍勃
X998877 阿曼达

电子表格 #2 DESTINATION(使用 GAS 填充,无重复,预期结果)

一个
ID 姓名
X123456 约翰
Y112233 莎拉
X998877 阿曼达
012344 鲍勃

使用带有set过滤器

SData更改为

const SData = SRange.getValues().filter(
  ((set) => (row) => {
    const jrow = row.join('');
    if (!set.has(jrow)) return set.add(jrow);
  })(new Set())
);

并修改目标范围:

ds.getRange(1,1,SData.length,SData[0].length).setValues(SData);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM