我在Google Sheet上创建了一个简单的工作表,用户可以输入注释。如果任务完成,我在第4列上有是/否数据验证。我编写的代码将完成的任务保存到另一个名为“Back Log”的工作表中。这是我的代码:
function Clear() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Main Note");
var ss1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Back Log");
var u;
var values = ss.getDataRange().getValues();
var Rangecopy
var rowNum2 = ss1.getLastRow();
var rowNum3 = rowNum2 +1
var Rangecopyto
var colNum = 4;
for (u=1;u<values.length +1;u++) {
if (ss.getRange(u,colNum).getValue() =="Yes") {
Rangecopy = ss.getRange(u,1,1,5)
Rangecopyto = ss1.getRange(rowNum3,1,1,5);
Rangecopy.copyTo(Rangecopyto);
Rangecopy.clearContent();
rowNum3 = rowNum3 +1;
}
}
}
代码完成了我的期望,但它始终保持最后一个条目不变。非常感谢帮助找出原因。 我在values.length中添加了+1,它给了我正在寻找的结果,但我认为可能有更合适的方法来做到这一点。
答案 0 :(得分:1)
二维数组中的值和电子表格中的行号偏移一。电子表格中的第一行是数组中的索引0。所以,你必须调整它。您有一个不想处理的标题行,因此必须在2开始计数。
var u=2;
for (u=2;u<values.length+1;u++) {
if (ss.getRange(u,colNum).getValue() =="Yes") {