我整理了以下代码来检查B列<>A列是否。 如果为 TRUE,则将A 列数据粘贴到B 列中。
这工作正常除了每次执行后都会添加 3 行! 我就是不明白为什么。
有人能解释一下为什么会发生这种情况吗? 我尝试分解这个脚本以了解每个部分的机制,但无法得出结论。
function RefreshSheets() {
var ss = SpreadsheetApp.openById("1YWjysA9uuGez3grhvMR3_JaAuBp5AsigOmDbxlk7d6c");
var sh = ss.getSheetByName("Front Sheet");
var rA = sh.getRange(6, 1, sh.getLastRow() - 0, 1);
var vA = rA.getValues();
var rD = sh.getRange(6, 4, sh.getLastRow() - 0, 1);
var vD = rD.getValues();
var rB = sh.getRange(6, 2, sh.getLastRow() - 0, 1);
var vB = rB.getValues();
for (var i = 0; i < vB.length; i++) {
if (vB[i][0] != vA) {
vB[i][0] = vA;
}
}
rB.setValues(vA)
}
最佳答案
尝试这样:
范围中的第三个参数是行数而不是最后一个行号。如果您使用最后一个行号但不从第 1 行开始,那么您将直接从数据底部进行迭代。
vA 和 vB 是二维数组,因此它们需要两个索引来指定单个单元格。
function RefreshSheets() {
var ss = SpreadsheetApp.openById("1YWjysA9uuGez3grhvMR3_JaAuBp5AsigOmDbxlk7d6c");
var sh = ss.getSheetByName("Front Sheet");
var rA = sh.getRange(6,1,sh.getLastRow()-5,1);
var vA = rA.getValues();
var rD = sh.getRange(6,4,sh.getLastRow()-5,1);
var vD = rD.getValues();
var rB = sh.getRange(6,2,sh.getLastRow()-5,1);
var vB = rB.getValues();
for (var i=0;i<vB.length;i++) {
if (vB[i][0] != vA[i][0]) {
vB[i][0] = vA[i][0];
}
}
rB.setValues(vA)
}
关于javascript - 为什么我的 Google 脚本在每次执行后都会添加 3 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60600506/