【发布时间】:2021-03-12 08:26:50
【问题描述】:
我是 GAS 新手,对 Javascript 有一点了解
我正在尝试读取 ID 列表(“出站”表中的 A 列)并将 ID 粘贴到新的“临时”表(A 列),如果 ID 重复,则仅显示一次 ID,我的这部分代码是工作正常。
接下来,如果 ID 匹配,我想将数据行从“出站”表复制到新的“临时”表,但如果 ID 重复,则它将合并列 E:K。 我没有进入合并部分,因为我的代码在查看 ID 并粘贴相关行时不起作用。
链接到 Google 表格和脚本:Click Here
这是我到目前为止的代码,我很欣赏没有使用一些变量/代码行,因为我一直在玩我的代码,并且可能有一些方法可以加快速度。
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var newdata = new Array();
var data = ss.getDataRange().getValues(); // get all data
var destSheet = ss.getSheetByName("temp");
var lastRow = sheet.getLastRow();
var lastCol = sheet.getLastColumn();
function main(){
var data = findUnique();
sort();
copyRowData();
}
function findUnique(){
for(nn in data){
var duplicate = false;
for(j in newdata){
if(data[nn][col] == newdata[j][0]){
duplicate = true;
}
}
if(!duplicate){
newdata.push([data[nn][col]]);
}
}
//Logger.log(newdata);
}
function sort(){
newdata.sort(function(x,y){
var xp = Number(x[0]); // ensure you get numbers
var yp = Number(y[0]);
return xp == yp ? 0 : xp < yp ? -1 : 1; // sort on numeric ascending
});
//Logger.log(newdata);
destSheet.clear();
destSheet.getRange(1,1,newdata.length,newdata[0].length).setValues(newdata); // Paste unique HS ID to new tab
}
function copyRowData() {
//var sheet = ss.getSheetByName('Outbound'); //source sheet
var range = sheet.getRange(2,1,lastRow,5).getValues();
Logger.log(range);
var destlastRow = destSheet.getLastRow();
var criteria = destSheet.getRange(1,1,destlastRow).getValues();
Logger.log(criteria);
var data1 = [];
var j =[];
Logger.log(range.length);
//Condition to check in A:A, if true, copy the same row to data array
for (i=0;i<range.length;i++) {
for (j=0; j<criteria.length; j++){
if (range[i] == criteria[j]) {
data1.push(range[i]);
}
}
}
Logger.log(data1.length);
//Copy data array to destination sheet
destSheet.getRange(2,2,data1.length).setValues(data1);
//targetrange.setValues(data1)
}
我正在寻找与此类似的输出,其中 Shaun 和 Kennedy 已将单元格 E 中的数据合并到 K: Click for image of expected outcome
非常感谢任何帮助。
【问题讨论】:
-
很遗憾,我无法打开您的示例电子表格。可以再确认一下吗?
-
@您链接的 Google 表格是否尚未公开,没有人可以访问它。
-
抱歉,它已链接到我的工作帐户,无法授权外部用户。我已将副本复制到我的个人帐户并更新了链接。它现在应该可以工作了。 @Tanaike
-
@iansedano 链接已修复
标签: arrays google-apps-script google-sheets merge copy-paste