簡體   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