我们每天都有使用XML将新条目添加到Google表格中(表1)。我们正在使用下面的代码将这些条目拉入最终用户的单独Google表格中(第2页)。然后,最终用户可以编辑数据。我们正在尝试比较工作表1和工作表2中的ID号。每次运行代码时,工作表1中与工作表2不匹配的工作表1中的ID号应添加到工作表2中。如果工作表1中的ID号是在工作表2中已经存在,应该跳过ID号。它并没有跳过比赛。而是每次我们运行代码时,它都会将所有内容添加到工作表2中,工作表2现在包含重复项。
for(var i = 1; i < slateDT.length; i ++) {
var bannerid = slateDT[i][0];
var match = "No Match";
var j = 1;
while(j < gradingDT.length && match == "No Match") {
var matchID = gradingDT[j][1].trim();
if(bannerid.trim() != matchID){
j++;
} else {
match = "Match";
}
}
if(match == "No Match"){
additions.push(moveColumns(slateDT[i]));
}
}
if(additions.length > 0) {
gradingSS.getRange(gradingDT.length + 1, 2, additions.length, additions[0].length).setValues(additions);
gradingDT = getDataValues(gradingSS.getName());
var sortRng = gradingSS.getRange(2, 1, gradingDT.length, gradingDT[0].length);
sortRng.sort(3);
}
function moveColumns(studentRow) {
studentRow.splice(17, 3);
var v = checkDefined(studentRow.splice(20, 1));
studentRow.splice(10, 0, v.join());
v = checkDefined(studentRow.splice(18, 1));
studentRow.splice(13, 0, v.join());
v = checkDefined(studentRow.splice(20));
studentRow.splice(14, 0, v.join());
return studentRow;
}
答案 0 :(得分:0)
好吧,我假设您怪异的moveColumns函数可以实现您想要的功能,并且根据我上面的问题,列号不匹配。将此替换为for循环:
for (var i = 0; i < slateDT.length; i++) {
var oldID = slateDT[i][0].trim();
var matchID = 0;
for (var j = 1; j < gradingDT.length; j++) {
var newID = gradingDT[j][1].trim();
if (oldID == newID) {
matchID = j;
break; //ends the j loop when it meets the match
}
} //for [j] loop
if (matchID == 0) {
additions.push(moveColumns(slateDT[i]));
Logger.log("No match was found for " + i);
} else {
Logger.log("A match was found for " + i + " at " + j);
}
} //for [i] loop
这与您试图在while循环中执行的操作非常相似,但是在某些情况下却从未设法使J永不递增。
一旦确定可以正常工作,请注释掉两条记录器行以提高性能。